Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用php函数后,无法使用php读取mysql数据库中插入的行_Php_Mysql - Fatal编程技术网

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

调用php函数后,无法使用php读取mysql数据库中插入的行,php,mysql,Php,Mysql,调用一个函数,如:- $setmessage = setlatestmessage($sessionid, $sendersuserid, $message1); 该函数位于functions.php文件中,我已将其包含在此文件中 功能是:- function setlatestmessage($sessionid, $userid, $message, $status = 0) { $dbc = mysqli_connect(hostname, username, password,

调用一个函数,如:-

$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';}
if(!$setmessage){
回音“0”;
}否则{
//获取刚刚插入的行的id
$query2=“从游戏\消息中选择id,其中会话\ id=$sessionid,消息='$message1',用户\ id=$sendersuserid按日期时间描述顺序限制1”;
$result2=mysqli_查询($dbc,$query2);
如果(mysqli_num_行($result2)==0){
//如果没有返回行
//这种情况永远不会发生
回音‘10’;
}
否则{echo'done';}
我得到的输出是10

但是,如果我只是在函数调用下放置一个sleep(50),或者我只是编写函数正在执行的操作,而不是函数调用,我会得到正确的输出。
无法理解发生这种情况的原因。

如果使用
mysqli\u insert\u ID()
或false on error在
setlatestmessage()
函数中返回上一次插入查询生成的ID,将更容易、更简单。然后只需检查:

$messageID = setlatestmessage($sessionid, $sendersuserid, $message1);

if ($messageID !== false)
{
    echo '<status>0</status>';
}
else
{
    echo '<status>10</status>';
}
$messageID=setlatestmessage($sessionid,$senderuserid,$message1);
如果($messageID!==false)
{
回音“0”;
}
其他的
{
回音‘10’;
}

Thanx man!!它很有魅力。但如果你能告诉我,为什么我的代码不起作用,它会更有帮助……我不知道,还没有测试过它