Загадка! Пишу PHP: $dydy = array(); $sql2 = "SELECT * FROM catalog1 WHERE city IN('скайп')"; $result2 = mysql_query($sql2) or die(mysql_error()); while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){ $dydy[] = $row2; } echo "<pre>";print_r($dydy);echo "<pre>"; echo $sql2,'<br>'; Выдаёт 1. Массив. 2. PHP: SELECT * FROM catalog1 WHERE city IN('скайп') Если пишу PHP: $dydy = array(); $sql2 = "SELECT * FROM catalog1 WHERE country IN('Свердловская область')"; $result2 = mysql_query($sql2) or die(mysql_error()); while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){ $dydy[] = $row2; } echo "<pre>";print_r($dydy);echo "<pre>"; echo $sql2,'<br>'; Выдаёт 1. Массив. 2. PHP: SELECT * FROM catalog1 WHERE country IN('Свердловская область') Однако! Если пишу PHP: $dydy = array(); $sql2 = "SELECT * FROM catalog1 WHERE country IN('Свердловская область, скайп')"; $result2 = mysql_query($sql2) or die(mysql_error()); while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){ $dydy[] = $row2; } echo "<pre>";print_r($dydy);echo "<pre>"; echo $sql2,'<br>'; Выдаёт 1. PHP: Array ( ) 2. PHP: SELECT * FROM catalog1 WHERE country IN('Свердловская область,скайп') Не подскажете, в чём тут дело? Что не так?
Если я напишу вместо country IN('Свердловская область,скайп')"; Вот так country IN('Свердловская область','скайп')"; То всё заработает, но области у меня в массиве $country и команда country IN('".implode(',',$country)."')"; не проходит, т.к. будет срабатывать country IN('Свердловская область,скайп')"; т.е. ставятся запятые и всё(!) Мне надо чтобы команда implode срабатывала так, чтобы был вариант country IN('Свердловская область','скайп')"; Как это сделать?
@yogeswar почитать документацию по implode. IN(' тут implode с первым аргументов ',' тогда всё будет как надо ')
@yogeswar, как говорится выше, да, смотреть документацию. Но я все таки, приведу пример из комментариев по документации, какжется то что надо. PHP: it should be noted that an array with one or no elements works fine. for example: <?php $a1 = array("1","2","3"); $a2 = array("a"); $a3 = array(); echo "a1 is: '".implode("','",$a1)."'<br>"; echo "a2 is: '".implode("','",$a2)."'<br>"; echo "a3 is: '".implode("','",$a3)."'<br>"; ?> will produce: =========== a1 is: '1','2','3' a2 is: 'a' a3 is: ''
Используя IN для строковых значений, каждое из них надо обернуть в кавычки, для чисел нет. PHP: $find = ["test1","test2"]; print "select a.* from table where c_column in('".implode("','",$find)."'")"; @mahmuzar не разжевал А ещё, а ещё, а ещё есть find_in_set