PHP上的多个查询不起作用

时间:2011-07-25 08:44:44

标签: php mysqli

考虑这个简单的PHP页面:

<?php

  $db = new mysqli("localhost", "myuser", "mypwd", "mydb");
    if ($db->connect_error)
      // Dying sequence;

    // Executing query
    $qres = $db->multi_query("SET @rank = -1; SELECT * FROM (SELECT @rank := @rank + 1 as rank, field1, field2 FROM mytable WHERE field1 = 'value') AS T1 WHERE rank = 2;");
    $db->commit();
    if (!qres) {
      // Problems in query
      // Dying
      $db->close();
      return;
    }
    if (!($qres->num_rows == 1)) {
      // Error fetched
      $numrows = $qres->num_rows;
      $db->close();
      // Dying
      return;
    }

    // Returning
    echo "ALLOK";

    $db->close();

  ?>

嗯,这不起作用。 如果我使用querymulti_query

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

看起来你只想从某个表中选择第3行。虽然排名将是不确定的,因为您没有为该内部查询指定ORDER BY子句。

您不需要此变量和多个查询来执行此操作。

使用LIMIT子句中的偏移量以及ORDER BY子句代替。

SELECT field1, field2 FROM mytable WHERE field1 = 'value' ORDER BY something LIMIT 2,1