2015-02-03

SQL 參數化查詢

MySQL
MySQL 的參數格式是以 "?" 字元加上參數名稱而成。
UPDATE myTable SET c1 = ?c1, c2 = ?c2, c3 = ?c3 WHERE c4 = ?c4

PostgreSQL/SQLite
PostgreSQL 和 SQLite 的參數格式是以 「:」 加上參數名而成。當然,也支援類似 Access 的匿名參數。
UPDATE "myTable" SET "c1" = :c1, "c2" = :c2, "c3" = :c3 WHERE "c4" = :c4

參數化查詢是防止SQL Injection的另一種方法,但對我目前的case來說沒必要,
mysql_real_escape_string 就能搞定的東西我認為沒必要再複雜化,
或用Active Record就已經處理好這些問題了,
只是怕以後會用到,先學起來。

reference:
http://zh.wikipedia.org/wiki/%E5%8F%83%E6%95%B8%E5%8C%96%E6%9F%A5%E8%A9%A2

2 則留言:

  1. 請問SQLite的查詢參數化(上例:c1),要如何宣告:c1的值?

    回覆刪除
  2. 你看文章最後的wiki鏈結裡面就有完整的範例了

    回覆刪除