簡體   English   中英

我的更新查詢出了什么問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM