mysqli:PHP致命错误:调用成员函数fetch_array()
我在准备发言时遇到了一些麻烦。基本上,这个查询不返回任何行,尽管我知道这个查询应该返回多行。我以为这只是SQL注入造成的问题,但我不知道,也许我在这里做错了什么。如果我检查有多少行,我会得到一个错误: PHP致命错误:调用成员函数fetch_array() 任何帮助都将不胜感激mysqli:PHP致命错误:调用成员函数fetch_array(),php,mysql,mysqli,Php,Mysql,Mysqli,我在准备发言时遇到了一些麻烦。基本上,这个查询不返回任何行,尽管我知道这个查询应该返回多行。我以为这只是SQL注入造成的问题,但我不知道,也许我在这里做错了什么。如果我检查有多少行,我会得到一个错误: PHP致命错误:调用成员函数fetch_array() 任何帮助都将不胜感激 $stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?"); $stmt->bind_param('ss',$use
$stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?");
$stmt->bind_param('ss',$username,$structureType);
$stmt->execute();
$stmt->bind_result($results);
$stmt->fetch();
if ($results) {
if($results->num_rows == 0) {
print("No results here.");
return 0;
}
$recordnames = array();
while ($next_row = $results->fetch_array()) {
$recordnames[] = $next_row['sid'];
}
return $recordnames;
}
使用$stmt->bind_result($result)时;您正在将sid从数据库绑定到变量$results。因此,您不能执行以下操作:
if($results->num_rows == 0) { //... }
或
我会这样做:
<?php
$stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?");
$stmt->bind_param('ss', $username, $structureType);
$stmt->execute();
$stmt->bind_result($sid);
$stmt->store_result();
if ($stmt->num_rows == 0)
{
print("No results here.");
$stmt->close();
return 0;
}
else
{
$recordnames = array();
while($stmt->fetch())
{
$recordnames[] = $sid;
}
return $recordnames;
}
?>
这种方式使用不同的逻辑,检查行计数是否为0,如果是,则显示“此处无结果”,如果不将结果放入数组中
<?php
$stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?");
$stmt->bind_param('ss', $username, $structureType);
$stmt->execute();
$stmt->bind_result($sid);
$stmt->store_result();
if ($stmt->num_rows == 0)
{
print("No results here.");
$stmt->close();
return 0;
}
else
{
$recordnames = array();
while($stmt->fetch())
{
$recordnames[] = $sid;
}
return $recordnames;
}
?>