2

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

我在 Facebook 上的 iframe 中有这个 Unity 游戏,调用同一目录中的一个 php 文件,这很有效。我想要它做的是更新玩家记录(如果存在),如果不存在则制作一个。

该脚本运行,但它总是返回“不在此处”,当我检查数据库时,实际上每次都在创建记录,但对于日期时间字段相同。所以我不明白为什么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();
    }
?>
4

2 回答 2

0

你有一个错字:

wherefores=$playerip

它应该是

wherefores=$playerIP

正因为如此

mysqli_affected_rows($db)

返回

-1
于 2013-03-31T15:05:03.297 回答
0

听起来您和我遇到了同样的问题,尤其是当您通过调试器运行代码时。我已经调查了 Netbeans 和 Xdebug 的问题,这似乎是 MySQLi 扩展本身的一个错误。已作出相应的错误报告。与此同时,您可以改用另一个表达式,例如:

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

继续调试剩余的代码。

于 2014-06-02T20:31:56.750 回答