5月
21
2007
分類:
最近更新:
2007-05-21
TWPUG問答~ SQL 文字搜尋
I try to write a searching engine with php and mysql. Somehow I always get error messages. Here is my code:
$sql = "SELECT * FROM `General` WHERE `Item_Name` LIKE $Name";
TWPUG::資料庫討論區
SQL syntax error.
- The field-name should be put in double-quote. It means case-sensitive.
- The
LIKE
only applies for text-based type field, therefore you need to put content in single-quote. Besides,LIKE
must be used with '%'.
In your case:
$sql = "SELECT * FROM "General" WHERE "Item_Name" LIKE '%{$Name}%'; ";
SQL語法錯誤。
- 表格及欄位名稱應該以雙引號括起。這表示區分大小寫。若不加雙引號,一律作大寫處理。
LIKE
只適用於文字型態的欄位,所以必須將查詢內容以單引號括起。此外,LIKE
的查詢內容必須配合 % 使用。
在 SQL 查詢中,任何非關鍵字且非純數字的文字都被視為資料庫項目(資料庫、表格或欄位)之名稱。而且 SQL 預設不理會大小寫,一律作大寫處理。例如: SELECT * FROM myUsers;
。在此查詢敘述中的 myUsers
將被視為表格名稱,而 SQL 會以大寫找尋 MYUSERS 表格。導致表格名稱不匹配而傳回空結果。如果你的資料庫項目名稱有使用大寫或非英文字母時,必須使用雙引號 (") 括起項目名稱,要求 SQL 引擎注意大小寫區別。
至於要查詢的字串內容(即文字型態欄位的內容),必須以單引號 (') 括起,才會被 SQL 引擎視為字串。否則將如上述所言,被 SQL 引擎視為資料庫項目名稱。例如: SELECT * FROM myusers WHERE id = rock;
。在此例中的 rock
將被視為欄位名稱,而不是字串內容。
在 SQL 語法規範(ANSI SQL)中,單引號和雙引號分別表示不同意義。以單引號括起者表示字串,雙引號括起者表示嚴格區分大小寫的資料庫項目(資料庫、表格或欄位等)之名稱。初學者常常疏忽這一點。
樂多舊網址: http://blog.roodo.com/rocksaying/archives/3284073.html