我正在爲Facebook創建簡單的遊戲。所有使用應用程序的用戶都被寫入數據庫。我需要經常檢查如果用戶已經存在在數據庫中,如何正確地執行該操作?PHP函數檢查用戶是否存在於MySQL數據庫中
所以我有變量$name = $user_profile['name'];
它成功返回用戶的名稱。
這是我的代碼部分來檢查如果用戶已經存在於數據庫中。
$user_profile = $facebook->api('/me');
$name = $user_profile['name'];
$mysqli = new mysqli("asd","asdf","pw","asdssst");
/* Create the prepared statement */
$stmt = $mysqli->prepare("SELECT COUNT(*) AS num FROM myTable WHERE userName = ?") or die("Prepared Statement Error: %s\n". $mysqli->error);
/* Bind results to variables */
$stmt->bind_param('s', $name);
/* Execute the prepared Statement */
$stmt->execute();
$data = $stmt->fetch();
if($data['num'] > 0)
{
echo "bad";
print "user already exists\n";
} else {
echo "good";
$apiResponse = $facebook->api('/me/feed', 'POST', $post_data);
print "No user in database\n";
}
/* Close the statement */
$stmt->close();
此代碼無效,應在用戶牆上發佈數據如果用戶不存在於數據庫中。我花了很多時間找到原因,但沒有成功。我試過用$stmt->bind_result($name);
而不是$stmt->bind_param('s', $name);
但是一樣。無論如何,如果用戶在數據庫中,它總是返回:good No user in database
。這意味着PHP總是返回0;
另外我試圖在數據庫MySQL中使用SELECT COUNT(*) AS num FROM myTable WHERE userName = FirstName LastName
,它工作成功。當用戶名未找到時返回num 0
,當用戶名在數據庫中時返回num 1
。
當我明白這個代碼總是返回$data['num']; = 0
也許你知道是什麼問題就在這裏?
P.S. 我知道我需要使用FB用戶名而不是用戶名,但在這種情況下,我需要這樣做。
我讀過這個:Best way to check for existing user in mySQL database?但它沒有幫助我。
謝謝你的答案,但我誤解了其中的這部分代碼我需要使用? – user3097011
您需要在獲得查詢結果後放置這類代碼。 – ChaseC
你能更新你的答案嗎?看起來像我的代碼中,請嗎?當然如果你有時間的話。 – user3097011