2013-05-20 37 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