2009-12-30 65 views
9

MySQLi查詢是否無緩衝?如果沒有,有沒有辦法做一個無緩衝的查詢,如非MySQLi mysql_unbuffered_query()與MySQLi的未緩衝查詢?

+0

您的意思是說查詢沒有被緩衝,或者響應集是無緩衝的? *爲什麼*將無緩衝優勢? – wallyk 2009-12-30 19:45:55

+2

設置的響應。根據'mysql_unbuffered_query'的文檔:「這可以節省大量的內存和SQL查詢,產生大的結果集,並且您可以在第一行被檢索後立即開始處理結果集,因爲您不必等待直到執行完整的SQL查詢。「 – ceejayoz 2009-12-30 19:48:31

+0

啊!很好。我想我從來沒有面對通過MYSQL連接移動大量數據。 – wallyk 2009-12-30 19:53:42

回答

7

mysqli_real_query(),其次是mysqli_use_result()

+0

'mysqli_use_result'似乎正是我要找的。謝謝! – ceejayoz 2009-12-30 20:08:45

8

MindStalker是正確的,但也許是最簡單的方法是在PHP手冊
http://php.net/manual/en/mysqlinfo.concepts.buffering.php

所示的薪火MYSQLI_USE_RESULT常量作爲resultmode說法,你可以設置mysqli_query工作爲mysql_unbuffered_query

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 
$uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT); 

if ($uresult) { 
    while ($row = $uresult->fetch_assoc()) { 
     echo $row['Name'] . PHP_EOL; 
    } 
} 
$uresult->close(); 
?> 
-2

它爲我工作

$uresult = $mysqli_new->query("INSERT INTO world (username, userid, points, price, br, admin) 
VALUES ('$word[username]',$word[userid], $points, 0, 0, '$word[adminname]')", MYSQLI_USE_RESULT); 
$uresult = $mysqli_new->query("SELECT username FROM world WHERE userid='$word[userid]'", MYSQLI_USE_RESULT); 
if ($uresult) 
{ 
    while ($row = $uresult->fetch_assoc()) 
    { 
     echo "uresult: ".$row['username'] . PHP_EOL; 
    } 
} 
$uresult->close();