2009-12-30 63 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();