MySql + InnoDB + PHP Дискриминация в одинарных кавычках? - PullRequest
0 голосов
/ 01 марта 2011

Хорошо, я недавно преобразовал несколько таблиц в механизм хранения InnoDB, и я получаю ошибки всякий раз, когда я использую одинарную кавычку в списке столбцов оператора INSERT:

INSERT INTO 'Table' ('Col1', 'Col2') VALUES ('Val1', 'Val2')

Когда мне надоело использовать phpMyAdmin для генерации правильного выражения, оно выглядело практически одинаково, поэтому я вставил его в свое приложение, и оно заработало. Затем в моем следующем утверждении была та же ошибка, поэтому я начал подозревать. Немного поигравшись, я обнаружил, что проблема в том, что для запроса нужен обратный тик вместо одинарных кавычек, но не для всего.

INSERT INTO `Table` (`Col1`, `Col2`) VALUES ('Val1', 'Val2')

работает, поэтому MySql не понимает одинарные кавычки. Что здесь происходит? Я также не могу просто оставить столбцы без кавычек, как раньше с MyISAM (то есть: Таблица (Col1, Col2))

Ответы [ 2 ]

5 голосов
/ 01 марта 2011

Это связано с тем, что одинарные кавычки обозначают строковые литералы, а обратные черты обозначают экранирование базы данных / таблицы / столбца.

Удаление обратных галочек приводит к ошибке, поскольку TABLE является зарезервированным словом, поэтому для его использования в качествеИмя таблицы, которую вы должны включить обратные метки.

1 голос
/ 01 марта 2011

Вы помещаете одинарные кавычки вокруг строковых значений и используете обратные кавычки вокруг имен объектов.Обратные пометки технически не нужны, если только это имя таблицы / столбца не является зарезервированным словом или содержит пробелы / забавные символы.

...