Php $stmt->;尝试获取非对象的属性时出错
我有以下疑问:Php $stmt->;尝试获取非对象的属性时出错,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我有以下疑问: // pagination if ($stmt = $mysqli->prepare('SELECT COUNT(id) FROM ' . $table)) { $stmt->execute(); $stmt->bind_result($totalitems); $stmt->fetch(); if (!isset($page)) { $page = (int)$page_number <= 0
// pagination
if ($stmt = $mysqli->prepare('SELECT COUNT(id) FROM ' . $table)) {
$stmt->execute();
$stmt->bind_result($totalitems);
$stmt->fetch();
if (!isset($page)) {
$page = (int)$page_number <= 0 ? 1 : (int)$page_number;
}
$limit = 4;
if ($page > ceil($totalitems / $limit)) {
$page = ceil($totalitems / $limit);
}
$start = ($page - 1) * $limit;
$stmt->close();
if ($stmt2 = $mysqli->prepare(' SELECT t1.id, t2.*
FROM ' . $table . ' t1
INNER JOIN ' . $table2 . ' t2 ON t2.id = t1.id
' . $optional_cond . $optional_cond2 . '
LIMIT ?, ?')) {
$stmt2->bind_param('ii', $start, $limit);
$stmt2->execute();
$stmt2->bind_result($col1, $col2, etc...);
while ($row = $stmt2->fetch()) {
echo $col1 . '<br>';
}
} else echo "Statement failed: " . $mysqli->error . "<br>";
}
但它发出了以下通知:
Notice: Trying to get property of non-object
我看不出我的问题出在哪里,发生了什么
修复(作者@Michael Berkowski-在评论中):
else echo“语句失败:”$mysqli->错误。“
”;
好的,我知道现在发生了什么。您有两个条件语句,分别是$optional\u cond
和$optional\u cond2
,然后在查询中包含这两个变量$可选条件$可选第2条。”代码>。这里没有检查错误<代码>$optional_cond2='和t2.zone='$地带代码>应读为$optional\u cond2='WHERE t2.zone='$地带
我们在这里处理字符串,因此两个变量都需要引用。例如:“$string”。
或“$string”
错误将出现在$mysqli
对象上,而不是$stmt2
。检查echo$mysqli->error
的输出。使用while($stmt2->fetch()){…}
和绑定的变量$column1,$column2。。。在循环内部。请参阅上的示例,您无法使用获取\u assoc()
。
Notice: Trying to get property of non-object
else echo "Statement failed: " . $mysqli->error . "<br>";