Я пытаюсь очистить запрос MySQL после вызова процедуры. Вот мой код:
$mysqli=new mysqli($mysql_host,$mysql_user,$mysql_password,$mysql_db);
if ($mysqli->connect_error)
{
die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
$mysqli->query("SET NAMES UTF8");
echo"blockSeparate";
$_POST['address']='Str';
if($clientIntercome=$mysqli->prepare("CALL mbusGetClientIntercomeByAddress(?)"))
{
$clientIntercome->bind_param("s",$_POST['address']);
$clientIntercome->execute();
$clientIntercome->bind_result($id,$flat,$phone,$redirectPhone);
while($clientIntercome->fetch())
{
echo"".$id." ".$flat." ".$phone." ".$redirectPhone."\n";
}
}
else
{
echo"SMTH is wrong";
}
$clientIntercome->close();
while(true)
{
echo"WORKS";
$mysqli->store_result();
if (!$mysqli->more_results())
{
break;
}
if (!$mysqli->next_result())
{
break;
}
}
echo"blockSeparate";
if($clientKeys=$mysqli->prepare("CALL mbusGetClientKeys(?)"))
{
echo"Here works too";
$clientKeys->bind_param('i',1);
$clientKeys->execute();
$clientKeys->bind_result($rf_id,$phone);
while($clientKeys->fetch())
{
echo"".$rf_id." ".$phone."\n";
}
//$clientKeys->close();
}
else
{
echo$mysqli->error;
}
$mysqli->close();
Я инициирую $_POST['address']
чтобы проверить этот скрипт на сервере, обычно я использую его через ajax.
var address=$("#cfgAddress").val();
var data={address:address};
$.ajax(
{
type: "POST",
url: "./getUserFlatPhone.php",
data: data,
success: function(data, textStatus, jqXHR)
{
console.log(data);
//some work
}
});
Если я попытаюсь сделать это с uncommented strng, он вернет внутреннюю ошибку сервера PHP, однако, если это закомментировано, ошибки нет, но следующий запрос вернет запятую из-за ошибки синхронизации. Однако этот код (пока цикл для пустого вызова процедуры MySQL) прекрасно работает в моем приложении. Также, если я запускаю его в браузере не через jquery, он не возвращает ошибку, но не публикует результаты.
РЕДАКТИРОВАТЬ: измененная закомментированная строка, которая не работает
Попробуй это: http://pastebin.com/SsYHsALL
Эта строка не mysqli
подключение. Так что не мы close()
в теме. Вместо этого удалите его.
$clientIntercome->close();
Эта строка в правильный способ закрыть соединение в соответствии с руководством:
$mysqli->close();