【问题标题】:SQL Query not Executing ProperlySQL 查询未正确执行
【发布时间】:2019-05-10 06:22:42
【问题描述】:

我的 SQL 查询似乎有错误。我不断收到此警告:

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,布尔值在

中给出

我很确定这指向了一个语法错误,我在网上找到了一个 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_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

这是我现在遇到的错误:

致命错误:未捕获的 mysqli_sql_exception:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 C:\xampp\htdocs(A)Book 2.0\Bootstrap\content_function.php:116 中的第 6 行的“12”附近使用正确的语法堆栈跟踪:#0 C :\xampp\htdocs(A)Book 2.0\Bootstrap\content_function.php(116): mysqli_query(Object(mysqli), 'SELECT category...') #1 C:\xampp\htdocs(A)Book 2.0\Bootstrap \readtopic.php(55): countReplies('1', '2', '12', Object(mysqli)) #2 {main} 在 C:\xampp\htdocs(A)Book 2.0\Bootstrap\content_function 中抛出。第116行的php

【问题讨论】:

标签: php sql function mysqli


【解决方案1】:

您的查询中有错误:

  • 字段名称必须放在« = »操作数的左侧,值放在右侧

  • 字段值,当类型为字符串时(我假设您的查询就是这种情况),必须用单引号括起来(或者更好的是,use bind parameters/这是传递变量值的标准到一个 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."'"
);

【讨论】:

  • "字段值必须用单引号括起来" - 仅当它们是字符串时。整数的处理方式不同。 “或者更好的是,使用绑定参数” 这是肯定的。你忘了$ 这个select 顺便说一句。
  • 感谢@FunkFortyNiner,解决了问题
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多