(對不起,我真的不知道我在做什麼。)mySQLi_affected_rows檢查不起作用,還是......?
我有這樣的統一遊戲在Facebook上呼籲在同一目錄下的PHP文件的iframe,而很多工作。我想要它做的是更新球員記錄,如果它在那裏,則創建一個記錄。
這個腳本運行,但它總是返回一個「不在這裏」,當我檢查數據庫時,它實際上是每次創建記錄,但是對於日期時間字段是相同的。所以我不明白爲什麼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();
}
?>
爲什麼不是'INSERT INTO ... ON DUPLICATE KEY UPDATE ...'而不是?一個單一的查詢,而不是(可能)兩個?注意:PHP的連接運算符是'.'。這是完全錯誤的:'echo('connect failed'+ mysqli_connect_error())'。你還假設你的查詢工作,並抑制了錯誤。 **從不**取得成功。 –
變量區分大小寫。請啓用一次error_reporting。而且,當已經使用mysqli時,請考慮準備好的語句。 – mario
如果'$ playerIP'和'$ playerip'只是一個錯字,你的腳本就容易受到SQL注入的攻擊。 – Gumbo