У меня есть база данных, где я получаю случайную строку из таблицы в зависимости от нескольких переменных. Я пытаюсь сделать так, чтобы он добавил свое имя пользователя в этом формате (Admin, Jerry, Ben) после просмотра рекламы (Мой проект - клиенты просматривают объявления для Bitcoin). Я хочу сделать так, чтобы после их просмотра он добавляет свое имя в строку с именем users_viewed_add (пример выше). Мне нужно получить только случайные строки, основанные на том, что их имя пользователя не существует в строке user_viewed_add atoll, поэтому они не могут просматривать объявление более одного раза.
На данный момент я пытаюсь сделать:
$query_second = mysqli_query($con, "SELECT * FROM business_advertisments WHERE ($users_credits >= amount_per_click) AND (users_viewed_add) NOT LIKE '$username' AND users_name != '$username' ORDER BY RAND() LIMIT 1");
Как вы можете видеть, AND (users_viewed_add) NOT LIKE '$username'
не работает для меня, поскольку он читает текст как целое слово. Проблема в том, что я использую запятую для разделения имен пользователей клиентов, просмотревших объявление. Есть ли какая-нибудь работа для этого? Я знаю метод проверки блока текста, но он не будет работать в SQL-заявлении. Я уверен.
Я нашел ответ на этот пост: Как добавить несколько "NOT LIKE"%?% "В предложение WHERE в sqlite3 в коде python?
Правильный синтаксис SQL для проверки слова не существует в строке:
AND users_viewed_add NOT REGEXP '[$username]'
Если вы хотите использовать несколько значений в своем сравнении LIKE, вы можете использовать:
AND users_viewed_add NOT LIKE ALL ('$username')
Это проверит, что ни одно из значений $ username не существует в поле users_viewed_add. Возможно, вам придется правильно форматировать вашу переменную, чтобы SQL работал.
Ты можешь сделать:
AND CONCAT(',', users_viewed_add, ',') NOT LIKE '%,$username,%'
Но вы, вероятно, захотите сделать разделенную таблицу многими для многих и использовать идентификатор пользователя вместо имени пользователя.
$username
= Admin? Может быть, у вас есть пробелы между запятыми?