Здравствуйте.
Делаю mysql-запрос средствами Друпал:
$query = $database->query("
SELECT id
FROM my_table
WHERE value_1 = 'srt' AND value_2 = '{$value_2}'
");
$result = $query->fetchAll();
где $value_2 содержит набор цифр, букв и точку с запятой.
Из-за точки с запятой выходит ошибка: " ; is not supported in SQL strings. Use only one statement at a time."
Подскажите, пожалуйста, как бороться с проблемой наличия в значениях запроса mysql-символов. При этом заменять эту точку с запятой на пустое значение или строку нельзя. Строка должна остаться в том же виде.
Комментарии
Попробуйте сделать запрос на чистом php
А ещё лучше - машинным кодом!
Можете пример продемонстрировать, пожалуйста?
<?php
$host = 'localhost'; // адрес сервера
$db_name = 'database'; // имя базы данных
$user = 'user'; // имя пользователя
$password = 'password'; // пароль
// создание подключения к базе
$connection = mysqli_connect($host, $user, $password, $db_name);$query = 'SELECT * FROM `USERS`';
$result = mysqli_query($connection, $query);
while($row = $result->fetch_assoc()){
echo $row['NAME'];
echo ' - ';
echo $row['FOOD'];
echo '<br>';
}
mysqli_close($connection);
?>
Вы это правда не знали?
Вы правда не видите, что это не друпал?
Это не чистый php, это php с модулем MYSQL Improved, нам же нужен чистый php
А кому - вам?
Мне и кому второму человеку
А ключ, ключ вам не нужен?
У друпала есть возможность делать безопасные запросы.
Тут подробнее: https://www.drupal.org/docs/drupal-apis/database-api
Этот запрос должен выглядеть так:
<?php
$result = $database->select('my_table')
->fields('my_table', ['id'])
->condition('value_1', 'srt')
->condition('value_2', $value_2)
->execute()
->fetchAll();
?>
уже был такой вопрос. надо вызывать функцию unserialize https://www.php.net/manual/ru/function.unserialize.php
может в sql есть такая?
Лучше делать как предлагает @yaro, но если хочется через $database->query(), то надо не пытаться запихнуть аргументы прямо в текст запроса, а использовать плейсхолдеры для аргументов, а их передавать в массиве вторым аргументом qurey():
<?php
$result = $database->query("SELECT * FROM {mytable} WHERE id IN (:ids[])", [':ids[]' => [13, 42, 144]]);
?>
Подробнее в документации: https://www.drupal.org/docs/drupal-apis/database-api/static-queries