Изменить таблицу MySQL с помощью PDO и подготовленного оператора

Я использовал PDO в своем проекте с PHP и MySQL. Все работает нормально, но у меня возникает ошибка при выполнении кода ниже:

$sql = "ALTER TABLE tbl_invoices AUTO_INCREMENT = ?";
$q = $db->prepare($sql);
$q->execute(array($invoice_start));  

Я хочу изменить таблицу с подготовленным оператором PDO. Но я получаю эту ошибку:

Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '?' на линии...

Я тестировал разные решения, но ни одно из них не смогло ее решить. Есть ли у вас какие-либо идеи?


person Mohammad Saberi    schedule 21.11.2016    source источник
comment
вы не можете связываться таким образом   -  person Funk Forty Niner    schedule 21.11.2016
comment
Не можете сделать это для всех команд alter?   -  person Mohammad Saberi    schedule 21.11.2016


Ответы (1)


ALTER TABLE tbl_invoices AUTO_INCREMENT = ?

Это то, что вы делаете неправильно тонкое первое место.

Никогда. Всегда. Трогать. Автоинкремент.

Каждый раз, когда вы принимаете это как число, это означает серьезный недостаток в структуре базы данных.

Что касается изменения таблиц в целом - да, большую часть времени вы не можете выполнить привязку.

person Your Common Sense    schedule 21.11.2016
comment
Поскольку мы никогда не должны касаться автоинкремента, неужели это ужасная идея использовать поле ИИ для порядка? Например, эта строка была вставлена ​​перед этой? - person bassxzero; 21.11.2016
comment
1) ON DUPLICATE KEY UPDATE будет увеличивать значение автоинкремента, когда запись существует. Возможность предотвратить создание больших промежутков в автоинкременте может быть приятной. 2) MySQL и MariaDB не позволяют вам установить значение ниже максимального. 3) Если вы хотите убедиться, что не создаются значения ниже определенного значения (например, если вы хотите позже импортировать данные, которые, как вы знаете, имеют максимальный идентификатор), также полезно установить идентификатор AUTO_INCREMENT. - person Frank Forte; 20.01.2018