2011-10-17 14 views
1

以下はfalseを返し、正確に何が間違っているかを知る方法がわかりません。PHP MySQLのprepared-statement prepare()が失敗します

$stmt = $dbo->stmt_init(); 
if($stmt->prepare("INSERT INTO transactions ('id', 'time') VALUES ('',?)")) // returns false 
{ 
} 

私はその時点で選択をオープンする別のステートメントを持っています。複数のステートメントを持つことは問題ですか?

答えて

3

データベースに正常に接続していることを確認しましたか?

限り、あなたのプリペアドステートメントと間違って何を考え出すよう、最新の文のエラーの内容を文字列で返します$ stmt->エラー、および$ dbo->エラーを表示することができるはず
/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
} 

、最新のmysqliエラーを返します。

printf("Error: %s.\n", $stmt->error); 
+0

ありがとうございます:DBエラー:コマンドが同期していません。今すぐこのコマンドを実行することはできません – clamp

+2

次のようなご質問があなたの役に立つかもしれません: http://stackoverflow.com/questions/3632075/mysqli-giving-commands-out-of-sync-error-why http://stackoverflow.com/questions/614671/commands-out-of-sync-you-cant-run-this-command-now1 –

0

テーブル名の前後に一重引用符を付けることは望ましくありません。これは次のようになります。

$stmt = $dbo->stmt_init(); 
if($stmt->prepare("INSERT INTO transactions (id, time) VALUES ('', ?)")) { 

} 
+0

感謝をチェックし、それは何も変更doesntの。依然としてfalseを返します。 – clamp

0

ちょうど私は、クエリで非既存の列の名前を言及した同じエラーだってを得ていたとして... ...それらの列が正しく入力されているかどうかを

関連する問題