[英]What's wrong with my update query?
你能告訴我這個更新聲明有什么問題嗎? 不在mysql中更新我的db記錄
$updateid = $row[id];
$result2 = mysql_query("UPDATE grades SET processed = 1
where 'id' = '$updateid'") or die(mysql_error());
ColumnNames
( 以及TableName )不應該用單引號括起來,因為它們是標識符而不是字符串文字。 用單引號包裝標識符使其成為字符串文字。
UPDATE grades
SET processed = 1
where id = '$updateid'
如果您不確定您使用的columnName( 或TableName )是否為保留關鍵字,請使用反引號分隔,而不是使用單引號。 例如,
UPDATE `grades`
SET `processed` = 1
where `id` = '$updateid'
作為一個旁注,查詢是脆弱的SQL Injection
,如果變量的值(一個或多個 )從外面走了進來。 請查看下面的文章,了解如何防止它。 通過使用PreparedStatements
您可以擺脫使用值周圍的單引號。
您正在引用您的列名稱。 如果你想這樣做(這里沒有必要),你應該使用反引號:
$result2 = mysql_query("UPDATE grades SET processed = 1
where `id` = '$updateid'") or die(mysql_error());
除此之外,您應確保您的變量在sql查詢中使用是安全的,最好使用PDO(或mysqli)和預處理語句。 如果你真的想使用不推薦使用的mysql_*
函數,你應該使用mysql_real_escape_string()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.