За последние 24 часа нас посетили 24584 программиста и 1695 роботов. Сейчас ищут 820 программистов ...

SQL запрос

Тема в разделе "PHP и базы данных", создана пользователем immortal.1986, 20 янв 2017.

  1. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Доброе утро! Помогите надо срочно, а мозг после двух ночей кода, просто сдох! вообщем код раскажет лучше меня, спасибо братья!

    PHP:
    1. $cam_list = 1,2,6,11,14,15,16,45,67,70; // это я на этом остановился! просто там по коду они парсятья json кодяться и тп,
    PHP:
    1. public function searchOnMap($search, $cameraTitle, $cam_list)
    2. $sql = "SELECT {$this->lang}_address, camera_sid FROM ctexts WHERE camera_sid = ? AND camera_sid IN ($cam_list)";
    вообщем не работает...
    дебажу.......

    вставляю жестко работает, через параметр не работает......
    дебажу.......

    $cam_list = "'1','2','3','4'"; не работает
    $cam_list = "'1','2','3','4'"; работает

    как сделать помогайте
     
    #1 immortal.1986, 20 янв 2017
    Последнее редактирование модератором: 20 янв 2017
  2. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    А в чём разница то работает/не работает?
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    Код (Text):
    1.  
    2. $cam_list = 1,2,6,11,14,15,16,45,67,70;
    такого в Пыхе не бывает

    должно быть
    PHP:
    1.  $cam_list ="1,2,6,11,14,15,16,45,67,70";
    - это строка
    ну и смотреть тип в бд camera_sid - если число, то оставляем так, если строка.... (мало ли) то все числа в одинарные кавычки
    ибо 1 != '1'
     
  4. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Блин (говорю мозг аут) дададада ВСЕ ВЕРНО ЭТО ' 1,2,43,4' одна большая строка в ячейке массива она не работает , а если сделать жестко числами работает, а если набор строк-чисел чероез запятую тоже работает , через цикл переберать массив, а не зя как то попроще ...
     
  5. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    так погоди, ты в IN передаёшь строку из чисел. А там должен быть массив. Сделай из строки массив и передавай его в IN
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    смотри запрос, а не код.
    var_dump($sql);
     
    denis01 нравится это.
  7. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    ЛЮДи спасайте шото вообще колапс! (ВСЕ ЯСНО НО НЕ ЧЕГО НЕ РАБОТАЕТ)
    Вообщем
    PHP:
    1. $sql= "SELECT {$this->lang}_address, camera_sid FROM ctexts WHERE camera_sid = ? AND camera_sid IN (1,2,6,11,14,15,16,45,67,70)";
    ЭТО РАБОТАЕТ ..... но как видите я жестко вставил в IN ()

    теперь пытаюсь передать
    PHP:
    1. $str= '';
    2. foreach ($cam_list as $k => $v) {
    3.     $str .= "'".(int)$v ."'". ",";
    4. }
    5. $str = substr($str, 0, -1);
    6.  
    7. $sql= "SELECT {$this->lang}_address, camera_sid FROM ctexts WHERE camera_sid = ? AND camera_sid IN ($str)";
    не работает что то вообще не получаеться
    вот массив каторый пришел
    PHP:
    1. array(13) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" [4]=> string(1) "5" [5]=> string(1) "6" [6]=> string(1) "7" [7]=> string(2) "22" [8]=> string(2) "44" [9]=> string(2) "45" [10]=> string(2) "67" [11]=> string(2) "67" [12]=> string(2) "87" }
    вот str каторую распарсил

    PHP:
    1. string(57) "'1','2','3','4','5','6','7','22','44','45','67','67','87'"
    СПАСАЙТЕ СРОЧНО ((((
     
    #7 immortal.1986, 30 янв 2017
    Последнее редактирование модератором: 30 янв 2017
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Какой запрос в переменной $sql получается?
     
  9. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    не получаеться вывести тебе селект по быстрому из модели( но по факту зачем он тебе!!!!)
    PHP:
    1. $str= '';
    2.       foreach ($cam_list as $k => $v) {
    3.           $str.= "'".(int)$v ."'". ",";
    4.       }
    5.       $str= substr($str, 0, -1);
    6.  
    7.    //$sql = "SELECT {$this->lang}_address, camera_sid FROM ctexts WHERE camera_sid = ? AND camera_sid IN (1,2,6,11,14,15,16,45,67,70)";
    8.    $sql = "SELECT {$this->lang}_address, camera_sid FROM ctexts WHERE camera_sid = ? AND camera_sid IN ($str)";
     
    #9 immortal.1986, 30 янв 2017
    Последнее редактирование модератором: 30 янв 2017
  10. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    я тут логи смотрел, в бубны бил!
    походу такой SELECT ru_address, camera_sid FROM ctexts WHERE camera_sid = 1 AND camera_sid IN ()
    МНЕ КАЖЕТЬСЯ ЭТО ИЗЗА bind params так как они одинаковые camera_sid!