Я в процессе очистки базы данных MySQL и должен сделать некоторые подобные изменения в нескольких таблицах. Таким образом, я собираю список таблиц
$query = " SELECT TABLE_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'myDB' AND COLUMN_NAME = 'activeColumn'";
затем перебирайте каждый, внося изменения, которые мне нужны. Проблема в том, что некоторые из этих таблиц имеют амперсанд в названии. Я думаю, что PHP и / или MySQL имеют проблемы с этим, поскольку это бросает это мое направление
/* $query = "SELECT * FROM Cats&Dogs"; */ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '&Dogs' at line 1
Я нашел способы исправить эту проблему, когда вам нужно вставить амперсанд в БД и даже когда у вас есть один в предложении WHERE (правда, это даже не полное решение, но это лучшее, что я нашел). Если я введу точный запрос в MySQL без использования PHP, тогда он будет работать.
Что может быть причиной этой проблемы?
Обратные кавычки. SELECT * FROM `Cats&Dogs`
.
Ссылка: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
Попробуйте экранировать имя таблицы с помощью обратной одиночной кавычки:
SELECT * FROM `Cats&Dogs`;
используйте addslashes()
когда вы отправляете ввод в базу данных и используете stripslashes()
при получении из datase, это позволит хранить и извлекать специальные символы в базе данных