Sql ведет себя странно в WordPress - PullRequest
0 голосов
/ 02 мая 2018

Я недавно начал разрабатывать плагин для WordPress, и так как мне нужен был стол ...

Я использовал следующий код (за исключением того, что он был подготовлен, а не вставлен напрямую с переменной $ table_name, плюс я применил параметры сортировки по умолчанию), чтобы создать свою таблицу во время активации моего плагина wordpress:

  "CREATE TABLE $table_name, id bigint(20) NOT NULL AUTO_INCREMENT,
    userid bigint(20),
    start_hour int(12) NOT NULL,
    end_hour int(12) NOT NULL,
    accepted bit,
    deleted bit,
    UNIQUE KEY id(id);"

после того, как я добавил некоторые данные, я попробовал пару запросов, которые вели себя правильно, пока ... (извините за итальянские настройки, я работаю над WAMP клиента)

magic SQL

Моей первой мыслью было, что, возможно, значение было переполнено по какой-то странной причине (даже если tho (2 ^ 32) / 2 должно быть 2.147.483.648, а мои значения - 1.525.910.400), поэтому я преобразовал его в bigint (20) , но результаты не изменились.

Я ожидаю, что этот запрос ничего не даст, хотя я ожидаю, что это будет результат запроса:

SELECT COUNT(*)
FROM wp_t128customCalendarBookings
WHERE 'start_hour' BETWEEN 1525910400 AND 1525912200 OR 
      'end_hour' BETWEEN 1525910400 AND 1525912200;

Есть ли кто-нибудь, кто мог бы помочь мне решить эту странность?

1 Ответ

0 голосов
/ 02 мая 2018

Проблема в том, что вы поставили одинарные кавычки вокруг имени start_hour столбца. Вы фактически сравниваете строку со значением «start_hour» со значением «1», что приводит к истинному значению, и, таким образом, возвращаются все строки.

Вы должны использовать символ обратной галочки (`) для инкапсуляции имен столбцов / таблиц, а не одинарные кавычки, так как одинарные кавычки интерпретируются как буквенные строки.

select start_hour from wp_t128customCalendarBookings WHERE `start_hour` < 1
...