我一直在嘗試做一個Facebook遊戲幾個星期了,我卡住了..它可能會是一個簡單的問題來回答,但這是我第一次與MySQL合作,我沒有找到一些在互聯網上幫助我。插入一次到MySQL或更新,如果存在 - Facebook的應用程序
我想做的是一個Flash遊戲,人們在確認被授予後上傳他們的個人數據,如電子郵件,姓名,姓氏,並獲得分數,如果現有值較低。
說得對,現在我已經成功地創建此代碼
$dbhost = 'bla bla';
$dbuser = 'bla bla';
$dbpass = 'bla bla';
$data = 'bla bla';
$db = mysql_connect($dbhost, $dbuser, $dbpass);
if (mysql_errno() > 0) {
if (mysql_errno() == 1203) {
die("DB error");
} else {
die("DB error");
}
}
if ($_REQUEST['action'] == "add") {
mysql_select_db($data, $db);
$insert = "INSERT INTO FB (UID, first_name, last_name, email, link)
VALUES (
'".$_REQUEST['uid']."',
'".$_REQUEST['first_name']."',
'".$_REQUEST['last_name']."',
'".$_REQUEST['email']."',
'".$_REQUEST['link']."'
)";
$res = mysql_query($insert, $db) or die ("Save Error");
mysql_close($db);
echo "Added to DB!";
}
它工作得很好,但它有一個問題..如果我再次提交這個行業的另一個複製列在表中出現相同的信息。
我希望用戶只提交一次..因此擁有唯一的行並只更新他的分數,如果他設法獲得更高的分數。
任何幫助,將不勝感激:)
**你的代碼很容易受到SQL注入攻擊**你真的*應該使用[prepared statements](http://stackoverflow.com/a/60496/623041),你通過它你的變量作爲參數不被SQL評估。如果你不知道我在說什麼,或者如何解決它,請閱讀[Bobby Tables](http://stackoverflow.com/q/332365/623041)的故事。 – eggyal
正如[簡介](http://www.php.net/manual/en/intro.mysql.php)中有關'mysql_ *'函數的PHP手冊章節所述:*此擴展已被棄用,因爲PHP 5.5.0,建議不要編寫新的代碼,因爲它將來會被刪除。相反,無論是[mysqli](http://www.php.net/manual/en/book.mysqli.php)還是[PDO_MySQL](http://www.php.net/manual/en/ref.pdo應該使用-mysql.php)擴展名。另請參閱[MySQL API概述](http://www.php.net/manual/en/mysqlinfo.api.choosing.php)以獲得進一步的幫助,以便選擇MySQL API。* – eggyal