2009-12-30 32 views
9

¿Las consultas MySQLi están sin búfer? Si no, ¿hay alguna manera de hacer una consulta sin búfer, como con el no MySQLi mysql_unbuffered_query()?consulta sin búfer con MySQLi?

+0

¿Quiere decir que la consulta no está almacenada temporalmente o que el conjunto de respuestas no está búfer? * ¿Por qué * sería sin reservas ser ventajoso? – wallyk

+2

El conjunto de respuestas. Según los documentos de 'mysql_unbuffered_query':" Esto ahorra una cantidad considerable de memoria con consultas SQL que producen grandes conjuntos de resultados, y puede comenzar a trabajar en el conjunto de resultados inmediatamente después de que se haya recuperado la primera fila, ya que no tiene que esperar hasta que se haya realizado la consulta SQL completa. " – ceejayoz

+0

¡Ah! Muy bien. Supongo que nunca me he enfrentado a mover una gran cantidad de datos a través de una conexión MYSQL. – wallyk

Respuesta

7

mysqli_real_query() seguido de mysqli_use_result()

+0

'mysqli_use_result' parece ser justo lo que estoy buscando. ¡Gracias! – ceejayoz

8

MindStalker es correcta, pero tal vez la forma más fácil es la que se muestra en el manual de PHP
http://php.net/manual/en/mysqlinfo.concepts.buffering.php

Pasando el mysqli_use_result constante como el resultmode argumento, puede establecer mysqli_query trabajar como 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

funciona para mí

$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();