2017-04-23 60 views
-3
<?php 
// I fetching data from sql table "product".i want to prevent all unwanted characters and all.please add your suggestions in my code. 

    if(isset($_GET['search'])){ 

    $search_query = $_GET['user_query']; 

    $get_pro = "select * from product where title like '%$search_query%'"; 

    $run_pro = mysqli_query($con, $get_pro); 

    while($row_pro=mysqli_fetch_array($run_pro)){ 
    $pro_title = $row_pro['title']; 
    echo " <span>$pro_title</span> " 
    } 
} 
?> 
+0

格式不正確的問題很難閱讀:不太可能得到直接的答案。 – Richard

回答

0

防止SQL注入PDO(PHP數據對象)是最好的方法。 PDO爲程序員提供了更多的靈活性,就像您想要將項目切換到使用另一個數據庫一樣,PDO使該過程變得非常簡單。您只需更改連接字符串和一些查詢。 如果您的項目處於初始階段並希望獲得更大的靈活性,我強烈建議切換到PDO。要了解更多關於PDO的信息,可以參考此鏈接How does PHP PDO's prepared statements prevent sql injection? What are other benefits of using PDO? Does using PDO reduce efficiency?

好吧回到你問的問題。爲了防止在mysqli的接口SQL注入,你可以使用mysqli_real_escape_string()函數,它有兩個參數:

  1. 連接 - 指定MySQL連接使用(必需)
  2. escapestring-的字符串進行轉義(需要)

這個步驟後,你的代碼看起來像這個 -

$search_query = mysqli_real_escape_string($conn, $_GET['user_query']); 

其中$康恩將是你的連接句柄。 您可以在此步驟後附加'%'運算符,並可以使用結果來執行查詢。

+0

感謝您的好建議。 –

+0

如果您發現我的答案有幫助,請不要忘記註冊。 –

+2

Mysqli是完全正常的,並且您忘記提及防止使用帶佔位符的參數化查詢的sql注入的唯一正確方法。 – Qirel