[英]case insensitive search in php
我在網站上使用了一個小的搜索腳本。
發布搜索表格后,我得到這個變量:
$var = $_GET[$q] ;
$trimmed = trim($var);
然后我嘗試在數據庫中搜索:
$query = "select * from test where acc like \"%$trimmed%\"";
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
.......
我嘗試搜索“測試”一詞。 (在我的數據庫中,我有一排“ Test”字樣。)但是什么也沒找到。 如果我搜索“測試”,則什么也沒有。 只有這樣,如果我在數據庫中精確搜索單詞,我才能得到結果。 (測試)。
我在某處讀到,“ LIKE”不區分大小寫。
您能幫我修改一下代碼以區分大小寫嗎?
謝謝。
區分大小寫的文檔 :
默認字符集和排序規則為latin1和latin1_swedish_ci,因此默認情況下非二進制字符串比較不區分大小寫。 這意味着,如果使用col_name LIKE'a%'搜索,則將獲得以A或a開頭的所有列值。 要使此搜索區分大小寫,請確保其中一個操作數具有區分大小寫或二進制排序規則。 例如,如果要比較均具有latin1字符集的列和字符串,則可以使用COLLATE運算符使兩個操作數具有latin1_general_cs或latin1_bin排序規則
區分大小寫取決於表的排序規則:
SHOW CREATE TABLE test
這是一個開始-檢查表是否區分大小寫。 我將它留給其他人來提高您的示例代碼的安全性。
這可以幫助您。
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
順便說一句,您應該使用mysqli對象在PHP中執行SQL請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.