PHP - получить строки из базы данных, где слово отсутствует в определенном тексте

0

У меня есть база данных, где я получаю случайную строку из таблицы в зависимости от нескольких переменных. Я пытаюсь сделать так, чтобы он добавил свое имя пользователя в этом формате (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-заявлении. Я уверен.

Теги:

3 ответа

0
Лучший ответ

Я нашел ответ на этот пост: Как добавить несколько "NOT LIKE"%?% "В предложение WHERE в sqlite3 в коде python?

Правильный синтаксис SQL для проверки слова не существует в строке:

AND users_viewed_add NOT REGEXP '[$username]'
0

Если вы хотите использовать несколько значений в своем сравнении LIKE, вы можете использовать:

AND users_viewed_add NOT LIKE ALL ('$username')

Это проверит, что ни одно из значений $ username не существует в поле users_viewed_add. Возможно, вам придется правильно форматировать вашу переменную, чтобы SQL работал.

  • 0
    Хм ... не имеет значения, это, вероятно, зависит от БД и может не работать на MySQL.
  • 0
    да, это не похоже на работу. Спасибо, в любом случае.
0

Ты можешь сделать:

AND CONCAT(',', users_viewed_add, ',') NOT LIKE '%,$username,%'

Но вы, вероятно, захотите сделать разделенную таблицу многими для многих и использовать идентификатор пользователя вместо имени пользователя.

  • 0
    это не похоже на работу. Он отображает строки, где мое имя пользователя «Admin» находится в users_viewed_add
  • 0
    Вы уверены, что $username = Admin? Может быть, у вас есть пробелы между запятыми?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню