Intereting Posts
Как создать систему виджетов в Codeigniter Индекс слов PHP, производительность и разумные результаты Любая инфраструктура для PHP, эффективная как Django для Python? Я не могу получить доступ к XAMPP phpMyAdmin; он говорит: Ошибка MySQL: Документация Не удается подключиться: неверные настройки Проблемы с установкой ковра Boniire / CI и .htaccess Как я могу разрешить пользователю загружать файл, который хранится за пределами webroot? Как я «эхо» «Идентификатор ресурса №6» из ответа MySql в PHP? Как скрыть сообщение об ошибке Сообщение Android Base64 String to PHP Перемещение Вход или Регистрация Ссылка на верхние ссылки в навигации по заголовку – Magento Отображать значение bindParam с использованием PHP PDO Загрузка файла codeigniter с помощью класса verot_upload и dropzone.js установить php70-gd на ubuntu Получение выбранного раскрывающегося содержимого для показа в электронном письме с формой jqGrid не может встроить редактирование

Команды не синхронизируются при вызове хранимой процедуры Mysql

У меня есть две процедуры хранения, мне нужно было записать запись (например, выбрать каждый следующий n записей) в первую, которая отображает все соответствующие записи.

 CREATE PROCEDURE `trans_all`(IN varphone VARCHAR(15)) BEGIN Select loans.amt, loans.date, loans.pay_period, borrower.phone As borrower_phone, borrower.name As borrower_name, lender.phone As lender_phone, lender.name As lender_name, From loans Left Join users borrower On borrower.id = loans.borrower_id Left Join users lender On lender.id = loans.lender_id Where (lender.phone = varphone) or (borrower.phone = varphone); END 

Затем я получаю счет в php;

 $result = $mysqli->query(sprintf("call trans_all('%s')",$phone)); $num_recs = $result->num_rows; 

тогда мне нужно было выбрать точные записи, чтобы я делал это

 $result = $mysqli->query(sprintf("call trans_history('%s','%s','%s')",$phone,$start,$limit)); $row = $result->fetch_assoc(); // this like gives the error Commands out of sync; you can't run this command now 

вторая хранимая процедура

 CREATE PROCEDURE `trans_history`(IN varphone VARCHAR(15), IN page INT, IN items INT) BEGIN Select loans.amt, loans.date, loans.pay_period, borrower.phone As borrower_phone, borrower.name As borrower_name, lender.phone As lender_phone, lender.name As lender_name, From loans Left Join users borrower On borrower.id = loans.borrower_id Left Join users lender On lender.id = loans.lender_id Where (lender.phone = varphone) or (borrower.phone = varphone) LIMIT page , items; END 

что может быть причиной этой ошибки?

SPs возвращают второй набор результатов, который содержит статус. Вам нужно использовать next_result() прежде чем next_result() последующие запросы.

 $result = $mysqli->query(sprintf("call trans_all('%s')",$phone)); $num_recs = $result->num_rows; $result->close(); $mysqli->next_result(); // <- you need this before you make another query //Then make call second SP $result = $mysqli->query(sprintf("call trans_history('%s','%s','%s')",$phone,$start,$limit)); $row = $result->fetch_assoc(); $result->close(); $mysqli->next_result();