Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Использование stored procedure в MySQL (http://forum.oszone.net/showthread.php?t=141819)

Strange_V 04-06-2009 01:52 1134469

Использование stored procedure в MySQL
 
Пишу небольшое приложение, есть желание использовать stored procedure ибо это упростить дальнейшие сопровождение, но эсть проблема.
Или я что то упускаю, или делаю не логично:
PHP код:

$mysqli = new mysqli('localhost''test''123456''db_test');

if (
mysqli_connect_errno()) { 
    
printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n"mysqli_connect_error()); 
    exit; 
}
//Запрос 1
if ( !$mysqli->multi_query('SELECT id, hash FROM myTable ORDER BY 1 LIMIT 15;') )
    echo 
$mysqli->error;
$result $mysqli->store_result();
while( 
$row $result->fetch_assoc() ){ 
    
printf("%d (%s)<br />"$row['id'], $row['hash']); 

$result->close(); 
//Запрос 2
if ( !$mysqli->multi_query('CALL test1;') )
    echo 
$mysqli->error;
$result $mysqli->store_result();
$row $result->fetch_assoc();
printf("%d<br />"$row[1]); 
$result->close(); 
//Запрос 3
if ( !$mysqli->multi_query('SELECT id, hash FROM myTable ORDER BY 2 LIMIT 5;') )
    echo 
$mysqli->error;
$result $mysqli->store_result();
while( 
$row $result->fetch_assoc() ){ 
    
printf("%d (%s)<br />"$row['id'], $row['hash']); 

$result->close(); 

$mysqli->close(); 

Третий запрос отваливается с "Commands out of sync; you can't run this command now".
Как правильно делать вызов нескольких SELECT и CALL под ряд?
Спасибо.

Sham 04-06-2009 13:41 1134834

Цитата:

If you execute mysqli_query() with resultmode MYSQLI_USE_RESULT all subsequent calls will return error Commands out of sync unless you call mysqli_free_result()
см. http://ru2.php.net/mysqli_query

Strange_V 04-06-2009 15:00 1134915

Sham, я читаю мануалы) там конечно написана правда, но совсем не описана причина такого поведения.
Вчера пол дня безрезультатно гуглил, а сегодня случайно наткнулся на полный ответ.


Время: 06:32.

Время: 06:32.
© OSzone.net 2001-