2013-07-25 45 views
0

我使用AJAX將用戶的輸入發送到PHP腳本。 PHP腳本顯示來自MySQL表的記錄。PHP準備語句中允許使用通配符嗎?

如果用戶輸入通配符(%),則會列出數據庫中的所有記錄。

從編碼的角度來看,這是行嗎?應該是% char允許的嗎?或者我的代碼可能是錯的?

我真的不關心用戶體驗,實際上這可能是一個很好的功能,但是我想知道這是否是準備好的語句的正常行爲


... 
$stmt = $dbh->prepare("SELECT * FROM tblStudent where lastNameStudent LIKE ?"); 
$stmt->bindParam(1, $lastname, PDO::PARAM_STR); 
$stmt->execute(); 
... 

當我設置$lastname='%'我得到的tblStudent表中的所有記錄。

回答

3

從代碼的角度來看,這是否很好?

是的。

應該是%char允許的嗎?

沒有問題。至少從安全的角度來看。

說到應用程序邏輯 - 這取決於。如果您希望按字面順序搜索,則可能會轉義該字符,如果要將其用作通配符,則不能轉義。

此行爲與預處理語句無關。
準備語句只是將變量放入查詢的一種方法。這個變量的內容不是它的業務。

+0

變量**的內容是**業務。這就是爲什麼它使用[預定義常量](http://www.php.net/manual/en/pdo.constants.php)。 – Lucio

+1

type!= content –

+0

同意。但請記住,在PHP中,類型可以由其內容定義。 – Lucio