mysql WHERE IN строка массива / имя пользователя

Код:

$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142"); $friendsArray2 = join(', ',$friendsArray); $query120 = "SELECT picturemedium FROM users WHERE username IN ('$friendsArray2')"; echo $query120; 

Это результат:

 SELECT picturemedium FROM users WHERE username IN ('zac1987, peter, micellelimmeizheng1152013142') 

Он терпит неудачу, потому что имена пользователей не обернуты одной цитатой, например, «zac1987», «peter», «mice …». Как обернуть каждое имя пользователя одинарной кавычкой?

Давайте прокручиваем каждое имя один за другим, избегая каждого.

Я рекомендую вам использовать фактическую функцию ускорения MySQL, а не просто кавычки вокруг, чтобы гарантировать, что данные действительно попадают в запрос правильно. (В противном случае, если бы я ввел такое имя, как « It's me! , Единственная цитата испортит запрос.) Я собираюсь предположить, что вы используете PDO (что вам нужно!), Но, если нет, замените ссылки к PDO::quote с mysql_real_escape_string .

 foreach($friendsArray as $key => $friend) { $friendsArray[$key] = PDO::quote($friend); } $friendsArray2 = join(', ', $friendsArray); 

Нашел этот вопрос в Google и сделал так, что понял решение. Не знаю, как «правильно» это решение, но это сработало для меня.

  $friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142"); $friendsArray2 = "'" . join(', ',$friendsArray) . "'"; $query120 = "SELECT picturemedium FROM users WHERE username IN ($friendsArray2)"; echo $query120; 

Если вы не хотите использовать PDO или другие сложные решения, используйте функцию implode, и вы все настроены.

 $friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142"); $friendsArray2 = "'" .implode("','", $friendsArray ) . "'"; $query120 = "SELECT picturemedium FROM users WHERE username IN ( $friendsArray2 )"; echo $query120; 

Решение: я просто взорвал ваш $friendArray на ',' вот и все. легко и просто! и он работает.

Выход : SELECT picturemedium FROM users WHERE username IN ('zac1987','peter','micellelimmeizheng1152013142')

Все просто, если у вас есть только цифры. Но если у вас есть строки, вам нужно проверить кавычки и быть осторожными. Если вы не хотите использовать PDO или «mysql_real_escape_string», следующий код в порядке. Я тестировал, это хорошо работает.

 $friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142"); $friendsArray2 = '"' . implode('","', $friendsArray) . '"'; $query120 = "SELECT picturemedium FROM users WHERE username IN ($friendsArray2)"; echo $query120; 

Просто нужно было сделать что-то очень похожее. Это очень простой способ сделать это, что я выяснил после большой головной боли.

 $friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142"); $friendsArray2 = implode("','",$friendsArray); 

это добавит кавычки между каждым элементом в массиве, но не в самом начале или в самом конце. Поэтому: $ friendsArray2 = «zac1987», «peter», «micellelimmeizheng1152013142», поэтому теперь все, что вам не хватает, это одинарная кавычка перед z в zac1987 и в самом конце после 3142, чтобы исправить это, просто заверните $ friendsArray2 в одинарные кавычки в вашей инструкции SELECT.

Его проверяли, проверяли и верны.

 $query120 = "SELECT picturemedium FROM users WHERE username IN ('$friendsArray2')"; echo $query120; 

OUTPUT: SELECT picturemedium FROM users WHERE username IN ('zac1987', 'peter', 'micellelimmeizheng1152013142')

выберите find_in_set ('userNameSearched', 'zac1987, peter, micellelimmeizheng1152013142')

http://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php