在调用函数之后,无法使用php函数使用php读取插入mysql数据库中的行
called a function like :-
$setmessage = setlatestmessage($sessionid, $sendersuserid, $message1);
the function is in file functions.php, which i had included in this file The function is :-
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;
}
now, just after i had called this function, the script goes like
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';}
The output i get is 10.
However, if i just place a sleep(50) under the function call, or i just code what the function is doing, instead of the function call, i get correct output. Cant figure out why this is happening.
调用如下函数: - p>
$ setmessage = setlatestmessage ($ sessionid,$ sendersuserid,$ message1);
code> pre>
该函数位于文件functions.php中,我已将其包含在此文件中
该函数为: - p>
function setlatestmessage($ sessionid,$ userid,$ message,$ status = 0){
$ dbc = mysqli_connect(hostname,username,password,database)
或 die(“连接数据库时出错”);
//没有行,所以只需添加一行
$ query2 =“插入表(session_id,user_id,message,status)值($ sessionid,$ userid) ,'$ message',$ status)“;
mysqli_query($ dbc,$ query2);
//如果一行受到影响,关闭连接并发送true
if(mysqli_affected_rows($ dbc)== 1){
mysqli_close($ dbc);
返回TRUE;
}
mysqli_close($ dbc);
返回FALSE;
}
code> pre>
if(!$ setmessage){
echo'&lt; status&gt; 0&lt; / status&gt;';
} else {
//刚刚插入的行的提取ID
$ query2 =“select 来自game_messages的id其中session_id = $ sessionid和message ='$ message1'和user_id = $ sendersuserid order by datetime desc limit 1“;
$ result2 = mysqli_query($ dbc,$ query2);
if(mysqli_num_rows( $ result2)== 0){
//如果没有返回行
// case永远不会发生
echo'&lt; status&gt; 10&lt; / status&gt;';
}
else {echo'done ';}
code> pre>
我得到的输出是10. p>
但是,如果我只是睡觉(50) 函数调用,或者我只是编写函数正在执行的操作,而不是函数调用,我得到正确的输出。
可以弄清楚为什么会发生这种情况。 p>
div>
It would be much easier and simpler if you would return the ID generated with your last insert query in setlatestmessage()
function using mysqli_insert_id()
or false on error. Then you would simply check:
$messageID = setlatestmessage($sessionid, $sendersuserid, $message1);
if ($messageID !== false)
{
echo '<status>0</status>';
}
else
{
echo '<status>10</status>';
}