Strange_V
04-06-2009, 01:52
Пишу небольшое приложение, есть желание использовать stored procedure ибо это упростить дальнейшие сопровождение, но эсть проблема.
Или я что то упускаю, или делаю не логично:
$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 под ряд?
Спасибо.
Или я что то упускаю, или делаю не логично:
$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 под ряд?
Спасибо.