考虑这个简单的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();
?>
嗯,这不起作用。
如果我使用query
或multi_query
你能帮助我吗?
答案 0 :(得分:1)
看起来你只想从某个表中选择第3行。虽然排名将是不确定的,因为您没有为该内部查询指定ORDER BY
子句。
您不需要此变量和多个查询来执行此操作。
使用LIMIT
子句中的偏移量以及ORDER BY
子句代替。
SELECT field1, field2 FROM mytable WHERE field1 = 'value' ORDER BY something LIMIT 2,1