2014-08-30 60 views
1

我有值的像一个字符串:使用值的WHERE子句中的字符串 - mysql的

$cat = "1,5,6,8,9"; 

现在我想用在WHERE子句中该变量。我该怎么做 ?

"select category from test where category...?" 

我使用下面的代码,但我得到number_of_result变空:

$array_of_cat = explode(",",$cat); 

if($number_of_result == 0){ 
    $mresult = mysql_query("select * from books where 
    GoodName like '%$title%' and GroupCode in ($array_of_cat) "); 
    $number_of_result = mysql_num_rows($mresult); 
} 
+0

你为什么要检查查询之前'$ number_of_result'? '$ number_of_result'尚未设置。 – 2014-08-30 07:24:06

+0

$ number_of_result将从电话设备发送。 – 2014-08-30 07:28:31

+0

这里是[基本问题](http://ideone.com/KCrVWZ)转载。 – user2864740 2014-08-30 07:38:14

回答

1

将您的SQL语句更改为此语句。使用implode()通过数组元素IN条款

$mresult = mysql_query(" 
    SELECT * FROM books 
    WHERE GoodName LIKE '%$title%' AND GroupCode IN (" . implode(",", $array_of_cat) . ")"); 
0
$cat = array(1,5,6,8,9); 

$array_of_cat = implode(",",$cat); 

if($number_of_result > 0){ 
    $mresult = mysql_query("select * from books where 
    GoodName like '%$title%' and GroupCode in ($array_of_cat) "); 

$number_of_result = mysql_num_rows($mresult); 
} 

另外,我强烈建议在PDO/MySQLi

1

你不读书了需要分解变量 - 这样做会导致数组在插入SQL字符串时会导致错误的值(字符串“Array”)。

尽管事实上,这是不安全的(SQL injection prone),你可以这样做:

if($number_of_result == 0){ 
    $mresult = mysql_query("select * from books where 
    GoodName like '%$title%' and GroupCode in ($cat)"); 
    $number_of_result = mysql_num_rows($mresult); 
} 

我强烈建议你使用mysql_real_escape_string功能来准备你的变量。

+0

现在是更新建议的时候了。 'mysql_'已被弃用*,并且不应该被推荐。 – user2864740 2014-08-30 07:35:42

+0

我完全同意你的看法。一半使用'mysql'和'php'的应用程序使用它们,尽管... – sfitsos 2014-08-30 08:24:12

相关问题