簡體   English   中英

在PHP和MYSQL中創建SELECT的正確方法是什么?

[英]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框架,因為所有框架都考慮了潛在的弱點,並為常見任務提供可靠的架構和類/函數,例如數據庫,用戶登錄等。

您可以看一些框架: CakePHPCodeIgniterZend FrameworkSymfony

  1. if($tipo == 'titulo') ,或者你將永遠在那里實現
  2. 您放入查詢字符串的任何用戶輸入上的mysql_real_escape_string
  3. 評論你的代碼
  4. 縮進SQL,即使它在PHP字符串中。 像這樣:

     $res = mysql_query(" SELECT * FROM `libro` WHERE `li_titulo` LIKE '%".mysql_real_escape_string($texto)."%' ", $conexion); 
  5. 大寫僅適用於關鍵字和函數。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM