У меня есть хранимая процедура в MySQL, которая запускается из файла PHP. Все хорошо, пока я закомментирую всю обработку курсора в хранимой процедуре (кроме объявлений).
Если, однако, я оставляю так много, как open myCursor;
работает (с или без close myCursor;
) Я получаю сообщение об ошибке «POST myphp.php net :: ERR_CONNECTION_RESET».
Определение курсора не имеет значения. Я попытался изменить курсор выбора на что-то действительно простое, что определенно работает.
Несмотря на ошибку, обработка, выполняемая с помощью курсора, работает, и хранимая процедура продолжает регистрировать свой прогресс до конца. Только когда он возвращается к PHP, все это разваливается без видимой причины.
Единственная возможность, которую я вижу, состоит в том, что курсор повреждает результаты, возможно, производя какое-то предупреждающее сообщение, но если это так, я не знаю, какое сообщение или как с ним работать, и нет явной причины для сообщения об ошибке, особенно Я не должен бежать так много, как один Fetch
на курсор, чтобы создать проблему.
Вот как выполняется хранимая процедура:
if ($stmt2 = mysqli_prepare($con, "call mySP(?)")) {#Store statement
mysqli_stmt_bind_param($stmt2, 's', $par);
mysqli_stmt_execute($stmt2);
$result = mysqli_stmt_get_result($stmt2);
mysqli_stmt_execute($stmt2);
это последняя строка, которую я могу точно сказать, работает. Ничто в остальной части PHP не работает после $result = mysqli_stmt_get_result($stmt2);
,
Обратите внимание, что если после mysqli_stmt_execute($stmt2);
Я вывожу mysqli_stmt_errno($stmt2).','.mysqli_stmt_error($stmt2)
Я получаю «0», поэтому похоже, что mysqli_stmt_execute($stmt2);
Для полноты вот выдержка из javascript, который используется для вызова PHP:
$.ajax({
type : "POST",
url : "./php/myphp.php",
cache : false,
data : {
sheet : JSON.stringify(userJson)
},
datatype : "json"}).done(function(result) {
Пожалуйста, помогите, так как я рву на себе волосы, и не могу найти способа отладить или обойти это.
Задача ещё не решена.
Других решений пока нет …