mysqli関数(mysqli_connect, mysqli_select_db, mysqli_query)
を使用して、1つのselectクエリと2つのストアドプロシージャを呼び出しています。
同じ$connection
(によって返されるmysqli_connect
)を複数回使用すると、次のエラーメッセージが表示されるようです。"Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in..."
以下は私のコードです:
<?php
$server="localhost";
$user="user";
$pass="pass";
$db="db";
$connection=mysqli_connect("$server","$user","$pass");
mysqli_select_db($connection, "$db") or die('Unable to select database.');
//First SELECT using $connection
$query=mysqli_query($connection, "SELECT item_name FROM items ORDER BY item_name DESC");
While ($result=mysqli_fetch_array($query,MYSQL_NUM))
{
$complete_result[] = $result[0];
$total_rows = $total_rows + 1;
}
//CALL to first sp using $connection
$query2 = mysqli_query($connection, "CALL sp_check_edits_remaining()");
while ($row2 = mysqli_fetch_array($query2, MYSQL_ASSOC)) {
$edits_remaining = $row2['edits_remaining'];
} // End while
//CALL to second sp using $connection
$query3 = mysqli_query($connection, "CALL sp_edit_data");
while ($row3 = mysqli_fetch_array($query3, MYSQL_ASSOC)) {);
$edits_id = $row3['id'];
} // End while
?>
説明したように、2番目のspを呼び出すと、上記のコードで上記のエラーメッセージが表示されます。(接続が閉じられることはありませんのでご注意ください。)
ただし、別の接続を作成して2番目のsp呼び出しに提供すると、このエラーは表示されなくなります。これは以下のコードに示されています
$connection2=mysqli_connect("$server","$user","$pass");
mysqli_select_db($connection2, "$db") or die('Unable to select database.');
//CALL to second sp using $connection
$query3 = mysqli_query($connection2, "CALL sp_edit_data");
while ($row3 = mysqli_fetch_array($query3, MYSQL_ASSOC)) {
$edits_id = $row3['id'];
} // End while
なぜこの予期しない動作が発生するのか、誰か助けてくれませんか?よろしくお願いします!