Предложение SQL WHERE не работает со строкой - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь выполнить запрос с предложением where со строкой из столбца типа VARCHAR (50) через PHP, но по какой-то причине он не работает ни в PHP, ни в MySQLWorkbench. Моя база данных выглядит так:

База данных Изображение:

database picture

Название таблицы - «паранойя», где столбец «кодовое имя» - VARCHAR (50), а «target» - VARCHAR (50). Запрос, который я пытаюсь выполнить, принимает форму при поиске записи с кодовым именем с четким названием «13Brownie» без пробелов, как показано ниже:

UPDATE paranoia SET target='sd' WHERE codename='13Brownie'

Однако по какой-то причине передача строки в аргумент кодового имени неэффективна. Предложение WHERE работает, когда я делаю codename = 7 или codename = 3 и возвращает эти соответствующие целочисленные кодовые имена, и я могу сделать codename = 0, чтобы получить все другие буквенные кодовые имена. Строковый ввод не работает ни в MySQLWorkbench, ни в PHP-скрипте, который я буду использовать для обновления таких выбранных строк, но опять-таки целочисленный ввод.

Кажется, что предложение WHERE принимает только целочисленные значения моего строкового ввода, или столбец фактически состоит из целочисленных значений каждой записи, но кодовое имя столбца четко определено как VARCHAR (50). Я искал часы, но безрезультатно.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

VARCHAR (10) является допустимым типом, принимающим строку длиной не более 10 символов. Я думаю, что это может произойти из-за ограничения внешнего ключа, введенного в другую таблицу. проверьте, есть ли у вас это ограничение, используя «просмотр отношений», если вы используете phpmyadmin.

0 голосов
/ 29 апреля 2018

Вероятно, в данных есть пробелы. Что стоит попробовать:

  1. ВЫБРАТЬ * ИЗ ПАРАНОЯ, ГДЕ кодовое имя, как '13% '
  2. ВЫБРАТЬ * ИЗ ПАРАНОЯ, ГДЕ кодовое имя = '13Brownie'
  3. ВЫБЕРИТЕ кодовое имя, LEN (кодовое имя) ОТ паранойи
...