[英]How to solve entry in MySQL?
我已經嘗試過以下php代碼:
echo $_SESSION['user_id']."<br />\n";
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = 'user_id'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
html中的輸出通知:
161 // Nr. user from users
Record updated successfully
但是在MySQL中沒有記錄。...當我像這樣修改php時:
echo $_SESSION['user_id']."<br />\n";
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id ='161'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
html中的輸出通知:
161 // Nr. user from users
Record updated successfully
在MySQL中一切正常。
哪里可能錯了?
$ sql =“ UPDATE user_passwords SET status ='off'WHERE users_id =' user_id '”;
在第一次嘗試中,您嘗試使用字符串'user_id'作為用戶的ID。 您應該改用$_SESSION['user_id']
或定義一個php變量:
$user_id = $_SESSION['user_id'];
然后可以使用哪一個,但是前綴$user_id
“ $”,因此$user_id
另外:如果期望變量為整數,則不應在SQL中使用撇號。 Plus2:處理$ _SESSION,$ _ GET和$ _POST變量時,應使用mysqli_real_escape_string
您的錯誤在這里,在WHERE users_id = 'user_id'";
它應該是您的會話變量,而不是該user_id
<?php
echo $_SESSION['user_id']."<br />\n";
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = '".$_SESSION['user_id']."'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
?>
注意:使用准備好的陳述。 防止SQL注入。
您在sql字符串中錯誤地傳遞了變量,
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = 'user_id'";
^
在上面的字符串中,您沒有帶變量名的$符號,該符號沒有找到您應使用的正確用戶ID。
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = '$user_id'";
在更新查詢中, “ user_id”的作用類似於一個值,而不是包含會話用戶ID的變量 。 這就是為什么它不起作用。
這樣嘗試
$user_id = $_SESSION['user_id'];
$sql = "UPDATE user_passwords SET status ='off' WHERE users_id = '$user_id'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.