我想編輯一個Mysql數據庫。有人可以告訴我爲什麼這是行不通的,它不會更新任何東西更新一個mysql數據庫
mysqli_query($con,"UPDATE Users SET day_started=1 WHERE email='$user_data['email']'");
$ user_data ['email'] works我檢查了它。我試着迴應它,它確實迴應了我想要的價值。我還檢查了數據庫和我想要的電子郵件字段的值。
謝謝您的幫助:)
我想編輯一個Mysql數據庫。有人可以告訴我爲什麼這是行不通的,它不會更新任何東西更新一個mysql數據庫
mysqli_query($con,"UPDATE Users SET day_started=1 WHERE email='$user_data['email']'");
$ user_data ['email'] works我檢查了它。我試着迴應它,它確實迴應了我想要的價值。我還檢查了數據庫和我想要的電子郵件字段的值。
謝謝您的幫助:)
試試這個:
$user_email = mysqli_real_escape_string($con, $user_data['email']);
mysqli_query($con,"UPDATE `Users` SET `day_started`='1' WHERE `email`='".$user_email."'");
我懷疑,答案就在你的查詢字符串您無法正常嵌入PHP變量。看看$user_email
兩側的性感滿座。當你這樣做時,PHP喜歡它。
我還清理了你的輸入和東西,並用反引號格式化了你的查詢,因爲PHP也喜歡這樣。
這不起作用的原因是因爲您正在使用字符串中的數組的一部分。爲了做到這一點,你有幾種選擇:
使用它周圍的花括號:
"UPDATE Users SET day_started=1 WHERE email='{$user_data['email']}'"
級聯:
使用臨時變量:
$email = $user_data['email'];
然後在您的字符串:
"UPDATE Users SET day_started=1 WHERE email='$email'"
(獎金,我剛剛得知這個我自己)圍繞email
刪除引號:
"UPDATE Users SET day_started=1 WHERE email='$user_data[email]'"
它實際上是讓我吃驚這是有效的,不會發出通知/警告。下面,然而,不生產的通知,所以一定要小心(它需要在雙引號的字符串或可能定界符):
echo $user_data[email];
注意:使用未定義的常量電子郵件 - 假設「電子郵件」
但是事實上,你甚至問這帶來了一些重大問題。首先,你應該打開error_reporting。因此,如果發生任何錯誤,如果一切順利的話,它會對你大喊大叫。其次,你應該do the same for mysqli。最後,如果您使用的是mysqli,請使用prepared statements。這正是他們的目標。
我曾嘗試使用臨時變量,但它不起作用 – user2636368
您需要更具體地說明「沒有工作」是什麼意思。但就像我在答覆中所說的那樣,準備好的陳述是要走的路。認真。忘記做任何其他方式。 – Mike
這是因爲最接近它的單引號匹配。 所以在你的代碼email='$user_data['email']'
,在'$
第一單引號只匹配在['email
。爲了避免這種情況,你可以修改你的SQL代碼:
"UPDATE Users SET day_started=1 WHERE email='$user_data[email]'",this really works.
或只是這樣做:
$post_email = $user_data['email'];
"UPDATE Users SET day_started=1 WHERE email='$post_email'";
mysqli_error()說什麼?你是否迴應了查詢以確保它是正確的?你是否從命令行運行它?你確定有一行符合該標準嗎? –
'$ con'是否是正確的連接處理程序? – DevlshOne
由於**'email ='$ user_data ['email']'** ** – hjpotter92