У меня проблема с запросами, которые содержат '
в именах.
Выберите HTML:
<select id="list-skins" name = "specific_skins_list[]" multiple="multiple" style="width: 500px">
<?php
$get_all_skins_list= mysqli_query($conn, "SELECT * FROM skins_list");
while($row = mysqli_fetch_array($get_all_skins_list)) {
$skins_name = $row["skins_list"];
$skins_id = $row["id"];
$skins_name = str_replace("'", "’", $skins_name);
echo '<option value="'.$skins_name.'">'.$skins_name.'</option>';
}//END WHILE GET_ALL_REGIONS
?>
</select>
POST
if (isset($_POST["specific_skins_list"])) {
$query .= "
AND skins LIKE '%" . implode("%' or skins LIKE '%", $_POST['specific_skins_list']) ."%'
";
}
Моя проблема : в таблице skins_list
у меня есть имена вроде:
i'oan , v'asilivev etc...
Эти имена содержат '
.
Запрос работает нормально, если имена нормальные без специальных символов. Я нашел пару решений в моем поиске, чтобы использовать mysqli_real_escape_string
.
Я пытался сделать что-то вроде этого:
if (isset($_POST["specific_skins_list"])) {
$skins = mysqli_real_escape_string($conn,$_POST["specific_skins_list"]) ;
$query .= "
AND skins LIKE '%" . implode("%' or skins LIKE '%", $skins) ."%'
";
}
, но я получаю эту ошибку:
mysqli_real_escape_string () ожидает, что параметр 2 будет строкой, массив задан в ... моей странице
И запрос выглядит так:
SELECT *
FROM import_acc
WHERE available = 'YES' AND region = 'UVAS' AND st= 'Truex' AND skins LIKE '%%' "
Спасибо за ваше время.
PS Думаю, единственный способ исправить это - изменить все таблицы skins_list и добавить manulaly double '' к каждому имени: D