Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php stmt查询工作正常,但简单查询得到致命错误:未捕获错误_Php_Sql_Select - Fatal编程技术网

Php stmt查询工作正常,但简单查询得到致命错误:未捕获错误

Php stmt查询工作正常,但简单查询得到致命错误:未捕获错误,php,sql,select,Php,Sql,Select,使用stmt可以正常工作,但简单查询中有一个错误。使用面向对象的php脚本 致命错误:未捕获错误:调用成员函数获取字符串上的数组。。。堆栈跟踪:在下一行抛出0{main}** 我有以下疑问: $SearchQuery=从工作地点选择*; ifisset$\u COOKIE['option1']{ $Opt1='1'; $SearchQuery.=阶段=“$Opt1”或; } ifisset$\u COOKIE['option2']{ $Opt2='2'; $SearchQuery.=阶段=“$O

使用stmt可以正常工作,但简单查询中有一个错误。使用面向对象的php脚本

致命错误:未捕获错误:调用成员函数获取字符串上的数组。。。堆栈跟踪:在下一行抛出0{main}** 我有以下疑问:

$SearchQuery=从工作地点选择*; ifisset$\u COOKIE['option1']{ $Opt1='1'; $SearchQuery.=阶段=“$Opt1”或; } ifisset$\u COOKIE['option2']{ $Opt2='2'; $SearchQuery.=阶段=“$Opt2”或; } ifisset$\u COOKIE['option3']{ $Opt3='3'; $SearchQuery.=阶段=“$Opt3”或; } ifisset$\u COOKIE['option4']{ $Opt4='4'; $SearchQuery.=阶段=“$Opt4”或; } ifisset$\u COOKIE['option5']{ $Opt5='5'; $SearchQuery.=阶段=“$Opt5”或; } ifisset$\u COOKIE['option6']{ $Opt6='6'; $SearchQuery.=阶段=“$Opt6”或; } $SearchQuery.=FALSE; IFAsset$\u COOKIE['FromDate']{ $From=$_COOKIE['FromDate']; $SearchQuery.=并创建_date>“$From”; } ifisset$\u COOKIE['ToDate']{ $To=$_COOKIE['ToDate']; $SearchQuery.=并创建日期<'$To'; } $SearchQuery.=和ID='$WorkID'; $SearchQuery.=按创建日期描述的订单限额100; 下面是错误行:

$row=$SearchQuery->fetch\u arrayMYSQLI\u ASSOC
缺少$db->query$SearchQuery

看起来您并没有执行查询,并且犯了一些小错误,如以下$row=$SearchQuery->fetch\u arrayMYSQLI\u ASSOC


错误消息的哪一部分可能不清楚?这里没有任何实际的对象,这将有任何fetch_数组方法-您只有一个普通字符串。您需要先执行SQL查询,然后才能从结果中提取任何记录。将$row=$SearchQuery->fetch_arrayMYSQLI_ASSOC更改为$row=$SearchQuery->fetch_arrayMYSQLI_ASSOC;听了CBroe的话。天哪,我真是太瞎了,谢谢你的评论,它帮了我很多忙,这是第四天找麻烦了!
   $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";

        $result = $mysqli->query($SearchQuery);
        //Mysqli is $db connection variable change it to yours, I didnt see in question
        if(!$result){ return $mysqli->error;}
        //You can use num_rows to check if searched result exist in db like following
        //if ($result->num_rows > 0) {
        $row = $result->fetch_array(MYSQLI_ASSOC);
        //if you wanna use while loop 
        //while($row = $result->fetch_array(MYSQLI_ASSOC)) {echo "return values here";}

        //uncomment following if you wanna use num_rows and uncommented up there 
        // }else{echo "No result found";}
        $result -> free_result();