のような関数と呼ばれる:-
$setmessage = setlatestmessage($sessionid, $sendersuserid, $message1);
関数は私がこのファイルに含めたファイルfunctions.phpにあります関数は:-
function setlatestmessage($sessionid, $userid, $message, $status = 0) {
$dbc = mysqli_connect(hostname, username, password, database)
or die("Error connecting database");
// there was no row, so just add a row
$query2 = "insert into table(session_id, user_id, message, status) values ( $sessionid, $userid, '$message', $status)";
mysqli_query($dbc, $query2);
// if a row was affected, close connection and send true
if (mysqli_affected_rows($dbc) == 1) {
mysqli_close($dbc);
return TRUE;
}
mysqli_close($dbc);
return FALSE;
}
この関数を呼び出した直後、スクリプトは次のようになります。
if (!$setmessage) {
echo '<status>0</status>';
} else {
// fetch id of the row just inserted
$query2 = "select id from game_messages where session_id = $sessionid and message = '$message1' and user_id = $sendersuserid order by datetime desc limit 1";
$result2 = mysqli_query($dbc, $query2);
if (mysqli_num_rows($result2) == 0) {
// if no row was returned
// case never should happen
echo '<status>10</status>';
}
else{echo'done';}
私が得る出力は10です。
ただし、関数呼び出しの下にsleep(50)を配置するか、関数呼び出しの代わりに関数が実行していることをコーディングするだけで、正しい出力が得られます。なぜこれが起こっているのか理解できません。