2016-11-21 3 views
0

PHPとMySQLで私のプロジェクトでPDOを使用しました。すべてが正常に動作しているが、私は以下のコードを実行する上でエラーが発生している:PDOとプリペアドステートメントでMySQLテーブルを変更

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

私はPDO準備文でテーブルを変更したいです。しかし、私はこのエラーが発生しています:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 '?' at line ...

私はさまざまなソリューションをテストしましたが、どれも解決できませんでした。あなたは何か考えていますか?

+0

あなたはその方法でバインドできません –

+0

すべての変更コマンドではできませんか? –

答えて

2

ALTER TABLE tbl_invoices AUTO_INCREMENT = ?

これは間違って最初に間違っていることです。

これまでタッチ。自動増分。

数字をとるときはいつでも、重大度というデータベース設計の欠陥があることを意味します。

一般的にテーブルを変更する場合は - はい、ほとんどの場合はバインドできません。

+1

「オートインクリメントには決して触れないでください」ので、オーダーにAIフィールドを使用するのはひどい考えですか? E.Gはこの行がこの前に挿入されていましたか? – bassxzero

+0

1)ON DUPLICATE KEY UPDATEはレコードが存在するときに自動増分値を膨らませます。自動インクリメントで作成される大きなギャップを防ぐ機能は素晴らしいものです。 2)MySQLとMariaDBでは、最大値より低い値に設定することができません。 3)特定の値以下の値が作成されないようにする場合(たとえば、後で最大IDを持つデータをインポートする場合)、AUTO_INCREMENT IDを設定すると便利です。 –

関連する問題