在调用函数之后,无法使用php函数使用php读取插入mysql数据库中的行

在调用函数之后,无法使用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>';
}