Условие в запросе

Рейтинг: 1Ответов: 2Опубликовано: 30.04.2015

Нужно составить такое условие:

выбрать id из таблицы, где url like $a и где этот же url не like $b

попытка такая:

SELECT id FROM main WHERE url LIKE '$a%' AND url NOT LIKE '$b%'

этот запрос не корректно работает. = вместо like не предлагать

Ответы

▲ 2

Запрос составлен верно; единственное что смущает - это кавычки. Если это PHP (вроде похоже), то кавычки нужны двойные: ", иначе переменные не интерполируются, т.е. так и останутся $a%.

$a = 'world';
print "Hello $a!"; // Hello world!
print 'Hello $a!'; // Hello $a!
▲ 2

Кавычки можно внутри двойных кавычек писать, чтобы не прибегать к экранированию.

$sql = "SELECT id FROM main WHERE url LIKE '$a%' AND url NOT LIKE '$b%'";

А вообще, это плохой подход. Возможна sql-инъекция. Нужно так

$conn = new PDO("mysql:host=mysql;dbname=test;", 'admin', 'admin');
$q = $conn->prepare('SELECT id FROM main WHERE url LIKE :a AND url NOT LIKE :b');
$q->bindParam(':a', "$a%", PDO::PARAM_STR);
$q->bindParam(':b', "$b%", PDO::PARAM_STR);