Как исключить несколько значений из запроса в базу?
Собираю все айдишники из таблицы
$sql = "SELECT GROUP_CONCAT(idto SEPARATOR ',') as likedid FROM likes WHERE idfrom='$currentloginid'";
if($result = $conn->query($sql)){ foreach($result as $row){ $likedid = $row["likedid"];} $result->free(); } else{ echo "Ошибка: " . $conn->error;}
Выводятся как и задумано через запятую 626f309cbf57f,628e0cd453df8,6255c7ee8e5b1,628e15c635a69,62a80bc9d4aed,62a859a2950a8. Потом результат использую для ещё одной выборки. Ругается на синтаксис: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cd453df8,6255c7ee8e5b1,628e15c635a69,62a80bc9d4aed,62a859a2950a8,62838b0c8b7e6,6' at line 1
$sql = "SELECT * FROM users WHERE sex!='$currentsex' && scum<10 && id not in ($likedid)";
Ответы (1 шт):
Как минимум нет закрывающей кавычки
должно быть так:
$sql = "SELECT * FROM users WHERE sex!='$currentsex' && scum<10 && id not in ($likedid)";
а дальше уже смотрите, о чем конкретно говорят ошибки, возможно likedid пуста или там не применимый к sql-строке формат
Upd: Если поле id в таблице имеет тип "строка", то в самом запросе LIKE нужно каждое значение взять в кавычки. Должно получиться на выходе что-то типа not in ('6255c7ee8e5b1','628e15c635a69','62a80bc9d4aed','62a859a2950a8')