2013-05-20 43 views
-2

如何寫這個MySQL查詢MySQL的選擇LIKE原因,如何用PHP編寫

SELECT * FROM `content`WHERE `language_option_tag` LIKE "%English%" 

到PHP代碼,我只能選擇哪些用戶已通過FORM

$sql .= 'SELECT * FROM `content` WHERE `language_option_tag` LIKE "%' .$lang_name. '%" ; 
+1

是什麼問題?查詢是正確的/ –

+0

是查詢是工作,但我想顯示哪個用戶已經從表單中選擇併發送POST方法到PHP的結果,所以我會將「%English%」替換爲「%」。$ lang_name。'%「和它顯示所有的數據。 – ahkeno

+0

使用這個'$ lang_name = $ _POST ['your_lang'];'。 –

回答

1
$lang_name = $_POST['your_lang'];  
$sql = "SELECT * FROM content WHERE `language_option_tag` LIKE '%$lang_name%'" ; 
一直POST數據
+2

小心確保'$ lang_name'已正確轉義;更好地參數化一個準備好的陳述。 – eggyal

+0

這與OP的查詢相同。 –

0

您錯過了一個bcaktick,也許它只是一個錯字,但這是導致錯誤,並且您使用的方式應該不同,如下更改

$sql .= 'SELECT * FROM `content` WHERE `language_option_tag` LIKE '% .$lang_name. %' ; 
         ^here is missing backtick `.    ^here there was a mistake 

然後我想記住你,你是在sql injection風險,這裏有How can I prevent SQL injection in PHP?看看。您應該使用準備statment以避免任何風險

+0

如果你看[OP的原始文章的來源](http://stackoverflow.com/revisions/2ad17242-d6ce-49e6-a384-7fa5ec815818/view-source),很明顯,錯字是簡單的降價格式; LIKE後面的「錯誤」不是錯誤 - 必須引用SQL字符串文字。 – eggyal

0
$dbconnection= mysqli_connect("localhost", "my_user", "my_password", "dbname");  
$lang = $_POST["lang"]; 
$lang = mysqli_real_escape_string($dbconnection, $lang); // To prevent SQL injection 
$sql = "SELECT * FROM content WHERE `language_option_tag` LIKE '%$lang%'" ; 

關於mysqli的訪問http://php.net/manual/en/mysqli.real-escape-string.php

+0

更好地參數化一個準備好的陳述。 – eggyal

+0

它顯示警告:mysqli_real_escape_string()期望恰好2參數,1在/ home/mydomain/public_html/project/select-query.php在線51 – ahkeno

+0

我的不好,第一個參數是數據庫連接變量,編輯我的答案 – Ergec

1
$lang_name = mysql_real_escape_string($_POST['selected_your_lang']);  
$sql = "SELECT * FROM content WHERE `language_option_tag` LIKE '%$lang_name%'"; 

注的用法:總是使用mysql_real_escape_string()的時候,你是從傳遞數據form..to停止SQL注入。

+0

mysql_real_escape_string已棄用並使用它不是一個好主意 – Ergec