За последние 24 часа нас посетили 103342 программиста и 5693 робота. Сейчас ищут 3160 программистов ...

Загадка!

Тема в разделе "PHP для новичков", создана пользователем yogeswar, 30 апр 2016.

  1. yogeswar

    yogeswar Новичок

    С нами с:
    22 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    Загадка!
    Пишу
    PHP:
    1. $dydy = array();
    2. $sql2 = "SELECT * FROM catalog1 WHERE
    3. city IN('скайп')";
    4. $result2 = mysql_query($sql2) or die(mysql_error());
    5. while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){
    6. $dydy[] = $row2;
    7. }
    8. echo "<pre>";print_r($dydy);echo "<pre>";
    9. echo $sql2,'<br>';
    Выдаёт
    1. Массив.
    2.
    PHP:
    1.  SELECT * FROM catalog1 WHERE city IN('скайп')
    Если пишу
    PHP:
    1. $dydy = array();
    2. $sql2 = "SELECT * FROM catalog1 WHERE
    3. country IN('Свердловская область')";
    4. $result2 = mysql_query($sql2) or die(mysql_error());
    5. while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){
    6. $dydy[] = $row2;
    7. }
    8. echo "<pre>";print_r($dydy);echo "<pre>";
    9. echo $sql2,'<br>';
    Выдаёт
    1. Массив.
    2.
    PHP:
    1. SELECT * FROM catalog1 WHERE country IN('Свердловская область')
    Однако! Если пишу
    PHP:
    1. $dydy = array();
    2. $sql2 = "SELECT * FROM catalog1 WHERE
    3. country IN('Свердловская область, скайп')";
    4. $result2 = mysql_query($sql2) or die(mysql_error());
    5. while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){
    6. $dydy[] = $row2;
    7. }
    8. echo "<pre>";print_r($dydy);echo "<pre>";
    9. echo $sql2,'<br>';
    Выдаёт
    1.
    PHP:
    1. (
    2. )
    2.
    PHP:
    1. SELECT * FROM catalog1 WHERE country IN('Свердловская область,скайп')
    Не подскажете,
    в чём тут дело? Что не так?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Нужно документацию по mysql IN почитать, ты эту функцию не правильно используешь.
     
  3. yogeswar

    yogeswar Новичок

    С нами с:
    22 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    Если я напишу вместо
    country IN('Свердловская область,скайп')";
    Вот так
    country IN('Свердловская область','скайп')";
    То всё заработает, но области у меня в массиве $country и команда
    country IN('".implode(',',$country)."')";
    не проходит, т.к. будет срабатывать
    country IN('Свердловская область,скайп')";
    т.е. ставятся запятые и всё(!)
    Мне надо чтобы команда implode срабатывала так, чтобы был вариант country IN('Свердловская область','скайп')";
    Как это сделать?
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    @yogeswar почитать документацию по implode.
    IN(' тут implode с первым аргументов ',' тогда всё будет как надо ')
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    @yogeswar, как говорится выше, да, смотреть документацию. Но я все таки, приведу пример из комментариев по документации, какжется то что надо.
    PHP:
    1. it should be noted that an array with one or no elements works fine. for example:
    2.  
    3. <?php
    4.     $a1 = array("1","2","3");
    5.     $a2 = array("a");
    6.     $a3 = array();
    7.  
    8.     echo "a1 is: '".implode("','",$a1)."'<br>";
    9.     echo "a2 is: '".implode("','",$a2)."'<br>";
    10.     echo "a3 is: '".implode("','",$a3)."'<br>";
    11. ?>
    12.  
    13. will produce:
    14. ===========
    15. a1 is: '1','2','3'
    16. a2 is: 'a'
    17. a3 is: ''
     
  6. yogeswar

    yogeswar Новичок

    С нами с:
    22 фев 2016
    Сообщения:
    8
    Симпатии:
    0
    Спасибо, я на дела отвлекался, но сейчас всё испробую.
     
  7. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.294
    Симпатии:
    216
    Адрес:
    Default city
    Используя IN для строковых значений, каждое из них надо обернуть в кавычки, для чисел нет.
    PHP:
    1. $find = ["test1","test2"];
    2.  
    3. print "select a.* from table where c_column in('".implode("','",$find)."'")";
    @mahmuzar не разжевал
    А ещё, а ещё, а ещё есть find_in_set
     
    mahmuzar нравится это.