mySQLi_affected_rows检查不工作,或者是…



(对不起,我真的不知道我在做什么)

我在Facebook上的iframe中调用同一目录下的php文件,这很有效。我想让它做的是,如果播放器记录在那里,就更新它如果没有,就创建一个。

这个脚本运行,但它总是返回一个"不在这里",当我检查数据库时,它实际上是每次创建记录,相同,但对于datetime字段。所以我不明白为什么affected_rows永远不会返回为"1"。

<?php
$db = @new mysqli('••.•••.•••.••', '•••••••••••', '••••••••','•••••••••••');
if ($db->connect_errno) 
{
echo("Connect failed "+mysqli_connect_error());
exit();
}
$inIP = $_POST["ip"];
$playerIP = mysqli_real_escape_string($db, $inIP);
$inUN = $_POST["un"];
$playerUN = mysqli_real_escape_string($db, $inUN);
$query = "UPDATE lobby SET whens=NOW(), wherefores='$playerIP', whys=0 WHERE whos='$playerUN'";
mysqli_query($db, $query);
if (mysqli_affected_rows($db) > 0)
    {
    echo "here";
    }
else
    {
    $query2 = "INSERT INTO lobby (whens,whos,wherefores,whys) values (NOW(),'$playerUN','$playerIP',0)";
    mysqli_query($db, $query2);
    echo "not here";
    }   
if ($db)
    {       
    $db->close();
    }
?>

你打错字了:

wherefores=$playerip

应该是

wherefores=$playerIP

because of that

mysqli_affected_rows($db)

返回
-1

听起来你和我一样遇到了同样的问题,特别是当你通过调试器运行代码时。我已经调查了Netbeans和Xdebug的问题,似乎这是一个错误在MySQLi扩展本身。已经生成了相应的bug报告。同时,你可以用另一种表达,例如:

if (mysqli_sqlstate($dbc) == 00000) {
   //your code
}

相关内容

  • 没有找到相关文章

最新更新