【发布时间】:2020-03-04 10:26:53
【问题描述】:
使用 stmt 可以正常工作,但是简单查询中出现错误。使用面向对象的 php 脚本。
致命错误:未捕获的错误:调用字符串上的成员函数 fetch_array() ... 堆栈跟踪:#0 {main} 在以下行引发** 我有以下查询:
$SearchQuery = "SELECT * FROM work WHERE ((";
if(isset($_COOKIE['option1'])){
$Opt1 = '1';
$SearchQuery .= "Phase = '$Opt1' OR ";
}
if(isset($_COOKIE['option2'])){
$Opt2 = '2';
$SearchQuery .= "Phase = '$Opt2' OR ";
}
if(isset($_COOKIE['option3'])){
$Opt3 = '3';
$SearchQuery .= "Phase = '$Opt3' OR ";
}
if(isset($_COOKIE['option4'])){
$Opt4 = '4';
$SearchQuery .= "Phase = '$Opt4' OR ";
}
if(isset($_COOKIE['option5'])){
$Opt5 = '5';
$SearchQuery .= "Phase = '$Opt5' OR ";
}
if(isset($_COOKIE['option6'])){
$Opt6 = '6';
$SearchQuery .= "Phase = '$Opt6' OR ";
}
$SearchQuery .= "FALSE) ";
if(isset($_COOKIE['FromDate'])){
$From = $_COOKIE['FromDate'];
$SearchQuery .= "AND Create_date > '$From' ";
}
if(isset($_COOKIE['ToDate'])){
$To = $_COOKIE['ToDate'];
$SearchQuery .= "AND Create_date < '$To' ";
}
$SearchQuery .= "AND ID = '$WorkID') ";
$SearchQuery .= "ORDER BY Create_date desc LIMIT 100";
这是错误行:
$row = ($SearchQuery->fetch_array(MYSQLI_ASSOC))
缺少 $db->query($SearchQuery);
【问题讨论】:
-
错误信息的哪一部分可能不清楚?你在这里没有有任何实际的对象,它会有任何
fetch_array方法——你只有一个普通的字符串。您需要先执行 SQL 查询,然后才能从结果中获取任何记录。 -
按照 CBroe 所说,将
$row = ($SearchQuery->fetch_array(MYSQLI_ASSOC))更改为$row = $SearchQuery->fetch_array(MYSQLI_ASSOC);。 -
我的天啊,我真是瞎了眼,谢谢你的评论对我有很大帮助,这是第四天找到愚蠢的麻烦!