Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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 SQL查询未正确执行_Php_Sql_Function_Mysqli - Fatal编程技术网

Php SQL查询未正确执行

Php SQL查询未正确执行,php,sql,function,mysqli,Php,Sql,Function,Mysqli,我的SQL查询似乎有错误。我一直收到这样的警告: 警告:mysqli_num_rows()要求参数1为mysqli_结果,布尔值在 我很确定这指向了一个语法错误,我在网上找到了一个SQL检查器,它说也有一个错误。我已经看了好几天了,但似乎找不到问题所在 代码如下: function countReplies($cid, $scid, $tid, $mysqli){ $select = mysqli_query($mysqli, "SELECT category_id, s

我的SQL查询似乎有错误。我一直收到这样的警告:

警告:mysqli_num_rows()要求参数1为mysqli_结果,布尔值在

我很确定这指向了一个语法错误,我在网上找到了一个SQL检查器,它说也有一个错误。我已经看了好几天了,但似乎找不到问题所在

代码如下:

    function countReplies($cid, $scid, $tid, $mysqli){
        $select = mysqli_query($mysqli, "SELECT category_id, subcatgory_id, topic_id FROM replies WHERE ".$cid." = category_id AND ".$scid." = subcategory_id AND ".$tid." = topic_id");

        return mysqli_num_rows($select);
   }
编辑:

使用后

mysqli_报告(mysqli_报告错误| mysqli_报告严格)

这就是我现在遇到的错误:

致命错误:未捕获mysqli\u sql\u异常:您的sql语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在C:\xampp\htdocs(A)Book 2.0\Bootstrap\content_function.php:116堆栈跟踪:#0 C:\xampp\htdocs(A)Book 2.0\Bootstrap\content_function.php(116):mysqli_查询(对象(mysqli),'SELECT category…')#1 C:\xampp\htdocs(A)Book 2.0\Bootstrap\readtopic.php(55):在C:\xampp\htdocs(A)Book 2.0\Bootstrap\content\u function.php的第116行中抛出countrepries('1','2','12',Object(mysqli))#2{main}


我认为您应该在“=”符号之后执行您在查询中输入的ID/实际值。比如:

"SELECT category_id, subcatgory_id, topic_id FROM replies WHERE category_id = '.$cid.' 
 AND subcategory_id = '.$scid.' AND topic_id = '.$tid.';");

您的查询中有错误:

  • 字段名必须位于«=»操作数的左侧,值必须位于右侧

  • 字段值的类型为string(我假设查询中就是这种情况)时,必须用单引号括起来(或者更好,这是向sql查询传递变量值的标准)

代码:

$select = mysqli_query($mysqli, 
    "SELECT category_id, subcatgory_id, topic_id 
    FROM replies 
    WHERE 
        category_id = '".$cid."'
        AND subcategory_id = '".$scid."'
        AND topic_id = '".$tid."'"
);

可能重复的评论不用于扩展讨论;此对话已被取消。“字段值必须用单引号括起来”-仅当它们是字符串时。整数的处理方式不同。“或者更好的是,使用绑定参数”,这是肯定的。您忘记了此
$
选择
顺便说一句。谢谢@FunkFortyNiner,修复了答案