-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Использование 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 под ряд?
Спасибо.
|
Цитата:
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
|
Sham, я читаю мануалы) там конечно написана правда, но совсем не описана причина такого поведения.
Вчера пол дня безрезультатно гуглил, а сегодня случайно наткнулся на полный ответ.
|
Время: 06:32.
© OSzone.net 2001-