2014-08-30 4 views
1

У меня есть строка значений, как:используя строку значений в ИНЕКЕ - MySQL

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

теперь я хотел бы использовать эту переменную в ИНЕКЕ. как мне это сделать ?

"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' еще не установлен. –

+0

$ number_of_result будет отправлено с телефонных аппаратов. –

+0

Здесь воспроизводится [основная проблема] (http://ideone.com/KCrVWZ). – user2864740

ответ

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.

Несмотря на то, что это небезопасно (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

+0

Я полностью согласен с вами. Половина приложений, которые используют 'mysql' и' php', используют их, хотя ... – sfitsos

Смежные вопросы