[英]What is the correct way of printing results set by `SELECT *` with multiple `WHERE` clauses in prepared statements using `fetch_assoc()` in PHP-MYSQL?
[英]What is the correct way to make a SELECT in PHP and MYSQL?
如何從表單中收到的變量中進行選擇?
我有以下代碼,但我認為我不能這樣做:'%'。$ texto。'%'
$busqueda=$_POST['texto'];
$tipo=$_POST['tipo'];
if($tipo='titulo')
$res=mysql_query("SELECT * FROM LIBRO WHERE LI_TITULO like '%'.$texto.'%'",$conexion);
我該怎么辦? 感謝您的時間。
總是對變量或某種過濾做mysql_real_escape_string():
如果你期望整數解析變量
$myId = (int)$POST['id'];
如果你期望沒有HTML的字符串:
$myString = mysql_real_escape_string(strip_tags($POST['string']));
等等。 永遠不要相信用戶的輸入!
最好的選擇是使用PHP框架,因為所有框架都考慮了潛在的弱點,並為常見任務提供可靠的架構和類/函數,例如數據庫,用戶登錄等。
您可以看一些框架: CakePHP , CodeIgniter , Zend Framework , Symfony
if($tipo == 'titulo')
,或者你將永遠在那里實現 mysql_real_escape_string
縮進SQL,即使它在PHP字符串中。 像這樣:
$res = mysql_query(" SELECT * FROM `libro` WHERE `li_titulo` LIKE '%".mysql_real_escape_string($texto)."%' ", $conexion);
大寫僅適用於關鍵字和函數。 MySQL不區分大小寫。
mysql_query("SELECT * FROM LIBRO WHERE LI_TITULO like '%{$busqueda}%'",$conexion);
編輯:
您的if
語句中也有錯誤:
if($tipo='titulo')
這不是比較,而是一項任務。 如果你想比較,請使用
if($tipo==='titulo')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.