我正在爲Facebook創建簡單的遊戲。所有使用應用程序的用戶都被寫入數據庫。我需要經常檢查如果用戶已經存在在數據庫中,如何正確地執行該操作?PHP腳本來檢查如果用戶已經存在於MySQL數據庫
所以我有可變$name = $user_profile['name'];
它成功返回用戶名
這是我的部分代碼檢查,如果用戶在數據庫中已存在。
$user_profile = $facebook->api('/me');
$name = $user_profile['name'];
$mysqli = new mysqli("host","asd","pw","asdf");
echo "1";
$sql = "SELECT COUNT(*) AS num FROM myTable WHERE userName = ?";
echo "2";
if ($stmt = $mysqli->prepare($sql)) {
echo "3";
$stmt->bind_param('s', $name);
echo "4";
$stmt->execute();
echo "5";
$results = $stmt->get_result();
echo "6";
$data = mysqli_fetch_assoc($results);
echo "7";
}
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";
}
}
此代碼無效,應在用戶牆上發佈數據如果用戶不存在於數據庫中。我花了很多時間找到原因,但沒有成功。調試後它不顯示任何錯誤。在我使用的每條線後面找到哪條線是不正確的,所以現在我知道哪條線是不正確的。它打印1 2 3 4 5
和stucks。 (代碼下面的所有內容都沒有加載。)所以這意味着這條線$results = $stmt->get_result();
是不正確的。但我誤解了這條線有什麼問題?
如果我對這行代碼加載註釋(然後在用戶的牆上打印1 2 3 4 5 6 7 No user in database!
和它post data
),但在這種情況下,程序總是執行相同的操作,而不是檢查數據庫。
此外,我試圖將COUNT(*)
更改爲COUNT(userName)
,但相同。
那麼你能幫助我嗎?
我讀過這個:Best way to check for existing user in mySQL database?但它沒有幫助我。
P.s.在這種情況下,我需要使用FB用戶名。
使用面向對象的連接,查詢,綁定和執行時,您可能需要使用對象oreinted獲取,而不是' mysqli_fetch_assoc' –
有些問題不重要: 你不應該使用用戶名(它可以改變!),更好的方法是使用用戶ID。 –
@RoyalBg謝謝你的回答,但我不知道如何正確地做到這一點。 –