PHP kullanarak MySQL çoklu sorgularda hata algılama

1 Cevap php

Ben diğer şeyler arasında (mysqli kullanarak :: multi_query) birden sorguları işlemek için güçlü olmalıdır mysqli'nin için bir sarıcı php sınıf var. Çalışır ama ben sorgulardan biri başarısız olduğunda hata ayrıntılarını almam gerekiyordu nasıl bulamıyor. Bu kod basitleştirilmiş bir versiyonu:

$queries=array('SELECT * FROM core_order_items',
    			'SELaaaaECT * FROM core_order_items',
    		    );

$dbConnection = mysqli_connect('localhost', 'siella', 'arifisis', 'mydb');
$dbConnection->set_charset('utf8'); 
$dbConnection->multi_query(implode(';', $queries)) ;

$i=0;
do {
    echo "Query:  " . $queries[$i] . " - ";
    $resultset=$dbConnection->store_result();
    if($resultset===false && strlen($dbConnection->errno)>0) {
    	echo "Returned error for query " . $i . "<br>";
    }
    else {
    	echo "Returned set for query " . $i . "<br>";
    }
     $i++;
}   
while ($dbConnection->next_result());

mysqli_close($dbConnection);

Notice how of the two SQL queries the first is fine and the second invalid. The result is:

Query: SELECT * FROM core_order_items - Returned set for query 0

Ne benim ikinci sorguya oldu? Bunu düzeltmek, o kadar gösterir, ancak bir hata oluştuğunda bile dizide değil sanki bulunuyor. Nasıl hata yok / mesajı alıyorum?

1 Cevap

mysqli :: Bir hata varsa false döndürür next_result. Bu örnek, docs dan

$dbConnection-->multi_query($query); 
do { 
   $dbConnection-->use_result()->close(); 
   echo "Okay\n"; 
} while ($mysqli->next_result()); 

if ($mysqli->errno) { 
   echo "Stopped while retrieving result : ".$mysqli->error; 
}