[英]Array to string conversion notice in PHP
我正在尝试使用PDO LIKE查询显示记录,但是我收到此错误消息,我知道该如何解决。
这是我的代码:
$rs = new JSONRecordSet();
$searchbooksSQL = "SELECT Title FROM l_stock WHERE Title LIKE ?";
$params = array("%$term%");
echo $rs->getRecordSet($searchbooksSQL, $params);
这是getRecordSet代码:
class R_RecordSet {
function getRecordSet($sql, $params = null) {
if (is_array($params)) {
$this->stmt = $this->db->prepare($sql);
// execute the statement passing in the named placeholder and the value it'll have
$this->stmt->execute($params);
} else {
$this->stmt = $this->db->query($sql);
}
return $this->stmt;
}
}
class JSONRecordSet extends R_RecordSet {
function getRecordSet($sql, $elementName = "ResultSet", $params = null) {
$stmt = parent::getRecordSet($sql, $params);
$recordSet = $stmt->fetchAll(PDO::FETCH_ASSOC);
$nRecords = count($recordSet);
if ($nRecords == 0) {
$status = 'error';
$message = json_encode(array("text" => "No records found"));
$result = '[]';
} else {
$status = 'ok';
$message = json_encode(array("text" => ""));
$result = json_encode($recordSet);
}
return "{\"status\": \"$status\", \"message\":$message, \"$elementName\" :{\"RowCount\": $nRecords ,\"Result\": $result}}";
}
}
我收到的错误消息是“注意:数组到字符串的转换”
getRecordSet()
定义为:
function getRecordSet($sql, $elementName = "ResultSet", $params = null) {
但是,您称其为:
echo $rs->getRecordSet($searchbooksSQL, $params);
您将需要修改代码以传递适当的$elementName
参数。 (默认值可能是合理的。)
echo $rs->getRecordSet($searchbooksSQL, 'ResultSet', $params);
另外,您可能应该使用json_encode()
从JSONRecordSet::getRecordSet()
生成最终结果,而不是使用字符串串联来构建最终结果。 这将使代码更易于阅读和理解。
另外,由于输入参数的语义变化,根据Liskov替换原理 , getRecordSet()
两个实现彼此不兼容,这很可能是导致第一个调用站点的参数不匹配的原因地点。 您可能想将JSONRecordSet::getRecordSet()
参数重新排序为:
function getRecordSet($sql, $params = null, $elementName = 'ResultSet') {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.