【问题标题】:Mysql can't perform more than 1 query at a timeMysql一次不能执行超过1个查询
【发布时间】:2009-12-21 21:35:25
【问题描述】:

当我这样做时:

$q = 'insert into movies values("lion king"); select * from movies;';
$result = $db->query($q);
echo mysqli_num_rows($result);

它说 $result 是布尔值,而不是 mysqli 结果。 如果我像这样检查 $result:

if(!$result) echo 'fail';

它输出“失败”。

mysql 一次不能处理超过 1 个查询吗?我该如何解决?

【问题讨论】:

    标签: php sql mysql


    【解决方案1】:

    您需要使用mysqli::multi_query

    【讨论】:

      【解决方案2】:
      $db->query('insert into movies values("lion king");');
      $db->query('select * from movies;');
      

      【讨论】:

      • 那么mysql不能一起做这些吗??
      • 你真的不想一起做这些。您应该检查您的插入是否有效,然后执行其他查询。
      【解决方案3】:

      你可以使用multi_query,它很难使用,但一般情况下不可以,一次只能使用一个查询。

      【讨论】:

      • 那是假的。返回多个记录集有很多正当理由。
      【解决方案4】:
      $q = 'insert into movies values("lion king")';
      $result = $db->query($q);
      $q = 'select * from movies';
      $result = $db->query($q);
      echo mysqli_num_rows($result);
      

      【讨论】:

      • +1 我建议不要像一些人建议的那样使用多查询,因为如果有 SQL 注入漏洞,多查询会带来新的后果。
      • @Bill,有潜在的 SQL 注入泄漏只是不使用函数的一个非常蹩脚的借口。
      • 1 月 +1。如果您有 SQL 注入漏洞...修复它们。无论您是否使用 mysqli::multi_query,它们都是一个大问题。对于一辆有 3 个瘪胎的汽车,您不妨说:“我在高速公路上驾驶它,但时速从不超过 40 英里。因为在 65 英里轮胎瘪的情况下驾驶是危险的。”
      • 人们在评论说“+1”时实际上没有投赞成票吗?我认为说 +1 是在解释你投票的原因......
      【解决方案5】:

      不要将在 MySQL 命令行界面中编写“查询”的方式与使用 API 进行的方式混淆。

      MySQL 命令只是用类似于 shell 的东西包装 API。

      使用 API,您实际上一次只能执行一个查询。当然,API 的客户端可以做一些聪明的事情并解释分号,为你拆分成多个查询,但这对于足够多的人来说可能并没有那么有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多