2009-12-30 3 views
9

Le query MySQLi sono senza buffer? In caso contrario, c'è un modo per fare una query senza buffer, come con il non-MySQLi mysql_unbuffered_query()?query non bufferizzata con MySQLi?

+0

Si intende che la query non è memorizzata nel buffer o che il set di risposta non è bloccato? * Perché * unbuffered potrebbe essere vantaggioso? – wallyk

+2

Il set di risposta. Per i documenti di 'mysql_unbuffered_query':" Ciò consente di risparmiare una notevole quantità di memoria con query SQL che generano set di risultati di grandi dimensioni, e puoi iniziare a lavorare sul set di risultati immediatamente dopo che la prima riga è stata recuperata poiché non devi aspettare fino a quando non è stata eseguita la query SQL completa. " – ceejayoz

+0

Ah! Molto bene. Immagino di non aver mai affrontato lo spostamento di molti dati attraverso una connessione MySQL. – wallyk

risposta

7

mysqli_real_query() seguito da mysqli_use_result()

+0

'mysqli_use_result' sembra essere proprio quello che sto cercando. Grazie! – ceejayoz

8

Mindstalker è giusto, ma forse il modo più semplice è quello indicato nel manuale di PHP
http://php.net/manual/en/mysqlinfo.concepts.buffering.php

Passando il MYSQLI_USE_RESULT costante come resultmode argomento, è può impostare mysqli_query a lavorare come 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

funziona per me

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