За последние 24 часа нас посетили 16550 программистов и 1679 роботов. Сейчас ищут 860 программистов ...

Sql запрос с подставкой данных

Тема в разделе "PHP для новичков", создана пользователем VadimPL, 17 июл 2015.

  1. VadimPL

    VadimPL Новичок

    С нами с:
    7 июл 2015
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Warsaw, Poland
    Код (PHP):
    1. mysql_query("SELECT * FROM `dle_post` WHERE `category` IN (".implode(",", $arr).")"); 
    Где ошибка? Я уже час не могу найти. Глаза красные.

    Надо подставить в sql запрос значения с массива $arr. И вывести соответственно записи, которые совпадают по категориям. Включил дебаг - ничего. В phpmyadmin запрос работает (если убрать .implode(",", $arr). и вставить число.). С php кода запрос тоже нормально могу послать, если убрать тот же .implode(",", $arr).

    Код (PHP):
    1. echo implode(",", $arr) 
    нормально выводит числа через запятую. Но код не работает..

    Помогите, пжлст.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Код (PHP):
    1. var_dump($arr); 
    может она пустая?
     
  3. VadimPL

    VadimPL Новичок

    С нами с:
    7 июл 2015
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Warsaw, Poland
    Не пустая.
    Код (Text):
    1. array(1) { [0]=> string(2) "66" }
    Хотя странно, почему string. Числа же.
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    это не важно, выдели свой запрос в отдельную переменную и посмотри, что именно отправляется в БД.
     
  5. VadimPL

    VadimPL Новичок

    С нами с:
    7 июл 2015
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Warsaw, Poland
    Код (Text):
    1. echo "SELECT * FROM `dle_post` WHERE `category` IN (".implode(",", $arr).")";
    Код (Text):
    1. SELECT * FROM `dle_post` WHERE `category` IN (68)
    Добавлено спустя 2 минуты 14 секунд:
    Нарыл вроде. Без кавычек в
    Код (Text):
    1. IN (68)
    PhpMyAdmin ничего не показывает. Но куда съедает кавычки?
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    а где они собственно есть в implode?, наверное надо как то так:
    Код (PHP):
    1. $str = implode("','", $arr);// тут ',' в двойных кавычках
    2. "SELECT * FROM `dle_post` WHERE `category` IN ('{$str}')"; 
     
  7. VadimPL

    VadimPL Новичок

    С нами с:
    7 июл 2015
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Warsaw, Poland
    SELECT * FROM `dle_post` WHERE `category` IN (68','66)

    Добавлено спустя 2 минуты 24 секунды:
    Ума не приложу, как число обвернуть в скобки.

    Добавлено спустя 41 секунду:
    Код (Text):
    1. $arr=array();
    2.         foreach ($city as $a)
    3.           {
    4.             is_int($a);
    5.             strip_tags($a);
    6.             $arr[]=$a;
    7.           }
    Вот так создаю массив.

    Добавлено спустя 4 минуты 21 секунду:
    Вспомнил.
    Код (Text):
    1. $arr[]="\"" . $a . "\"";
    Вот тебе и кавычки.
    Код (Text):
    1. SELECT * FROM `dle_post` WHERE `category` IN ("67")
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    VadimPL, так я же написал:
    Код (PHP):
    1. "SELECT * FROM `dle_post` WHERE `category` IN ('{$str}')"; 
    {$str} будет заменено, а вот ординарные кавычки вокруг останутся, и все будет ок.
     
  9. VadimPL

    VadimPL Новичок

    С нами с:
    7 июл 2015
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Warsaw, Poland
    Тупанул. так и так работает:)