(对不起,我真的不知道我在做什么。)
我在Facebook上的iframe中使用这个Unity游戏,在同一个目录中调用一个php文件,而且这很有效。我想要它做的是更新播放器记录(如果它在那里)并且如果不存在则更新。
此脚本运行但它总是返回“not here”,当我检查数据库时,实际上每次都创建记录,但是对于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();
}
?>
答案 0 :(得分:0)
你有一个错字:
wherefores=$playerip
应该是
wherefores=$playerIP
因为那个
mysqli_affected_rows($db)
返回
-1
答案 1 :(得分:0)
听起来你遇到了和我一样的问题,特别是如果你通过调试器运行你的代码。我已经用Netbeans和Xdebug调查了这个问题,看起来这是MySQLi扩展本身的一个错误。已根据bug report制作。在此期间,您可以改为使用另一个表达式,例如:
if (mysqli_sqlstate($dbc) == 00000) {
//your code
}
继续调试剩余的代码。