Почему запятая является единственным разделителем специальных символов, который работает для меня в этом запросе?

Я постоянно замечал, что когда я пытаюсь использовать массив в запросе MySQL, который находится внутри Ajax-вызова (по крайней мере, я пробовал его только из Ajax-вызова) в строке, разделенной специальным символом-разделителем, мой запрос работает только если символ является запятой. Например, это работает:

$myString = "String1,String2,String3,String4";
$ExplodedString =  explode(",", $myString);
$sql = mysqli_query($cxn, "SELECT user FROM login WHERE column IN ('".implode("','", $ExplodedString)."') ORDER BY user");

Но я никогда не смогу заставить другого специального персонажа, даже подчеркивания, вернуть НИЧЕГО:

$myString = "String1_String2_String3_String4";
$ExplodedString =  explode("_", $myString);
$sql = mysqli_query($cxn, "SELECT user FROM login WHERE column IN ('".implode("'_'", $ExplodedString)."') ORDER BY user");

//There are no error messages in my error log, even though error reporting is ON

Есть идеи, почему?

-4

Решение

Вы снова взломали (приклеили) с подчеркиванием, используйте ,:

$sql = "SELECT user FROM login WHERE column IN ('".implode("','", $ExplodedString)."') ORDER BY user";
//   ^ you glued it with comma not underscore

Примечание: на самом деле это довольно легко отладить.

Сначала поместите запрос в отдельную переменную, а затем просто используйте echo $sql;, Проверьте запятые, зарезервированные слова и т. Д., Чтобы вы знали, чего ожидать.

И, конечно же, не забудьте включить отчеты об ошибках:

error_reporting(E_ALL);
ini_set('display_errors', '1');

Это правильное использование на IN()

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]