次のように、同じ PHP ファイルから (準備済みステートメントを使用して) MySQL ストアド ルーチンを連続して呼び出したいと考えています。
$conn = getconn();
$stmt = $conn->prepare("CALL GetUserLoginData(?);");
$stmt->bind_param("s", $username);
$stmt->execute();
// Process data here... until next stored routine call
$conn = getconn();
// var_dump($conn);
$stmt2 = $conn->prepare("CALL SetUserLoginTime(?);");
$stmt2->bind_param("i", $userid);
$stmt2->execute();
wheregetconn()
は とのデータベース接続を返しますnew mysqli()
。
このコードは、PHP 5.3.8-1/MySQL 5.1.54 を実行する Web サーバーでは機能しますが、PHP 5.3.10/5.5.29 を実行するサーバーでは機能しません。
コメントを外すvar_dump($conn)
と、 ["error"]=> string(52) "Commands out of sync; you can't run this command now"
.
なぜこれが1つのサーバーだけで起こっているのかわかりません。