2011-07-25 17 views
1

は、この単純な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

お手伝いできますか?

+3

「if(!qres)」が致命的な誤植かもしれません。 –

答えて

1

テーブルから3番目の行を選択したいようです。ランクは、その内部クエリに対してORDER BY句を指定しないため、非決定論的ですが。

これを行うには、この変数と複数のクエリは必要ありません。

LIMIT句のオフセットとORDER BY句を代わりに使用してください。

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