0

再現する簡単な方法がないため、これはひどい質問です。ただし、私は Zend Framework を使用して OS X 上の MySQL データベースに接続しています。mysqli オブジェクトで prepare 関数を呼び出すと、null が返されることがあります。prepare 関数の指定された戻り値は false またはステートメント オブジェクトです。

準備ステートメントが失敗する理由に関する情報を探すために、他にどこを探すべきかわかりません。準備プロセスを可視化して、失敗の理由を確認する方法はありますか? トランザクションが開いている間に、すべての問題が発生します。

詳細が不足していて申し訳ありませんが、なぜこれが起こっているのかを突き止めることはできません.

4

4 に答える 4

1

ToughPal を修正するには、以下を使用する必要があります。

mysqli_query($db, "INSERT INTO table (variable1, variable2) VALUES (こんにちは、私の名前です);

実際の SQL の前に、最初に db 接続を定義してクエリで指定する必要があることに注意してください。

テーブル名、列名、および値データをバッククォート エスケープで囲むことを忘れないでください。

于 2009-05-30T21:32:35.790 に答える
0

準備済みステートメントの例
$result = $db->query( 'INSERT INTO server (key, value) VALUES (:key, :value)', array('key' => $foo, 'value' => $bar)

DBクエリを教えてください。

テスト データを使用して DB クエリを実行し、最初からクエリが正常に機能するかどうかを確認します。クエリに問題がなければ、コードが失敗する理由を調べることができます。

于 2009-05-30T20:00:17.627 に答える
0

週末に問題を見つけることができましたが、実際には症状を修正することしかできず、原因を修正することはできませんでした.

問題がランダムに発生していたため、元の問題には SQL を含めませんでした。同じコードが機能する場合と機能しない場合があります。この問題は、メモリ ポインタの問題のようです。問題が発生するたびに、Zend Debugger は、mysqli オブジェクトがあることを教えてくれました。そうしないと、準備機能を実行しようとしたときにエラーが発生したため、これを信じています。mysqli 接続のコンテナーとして機能するシングルトン オブジェクトがありますが、準備関数が失敗するたびに、=== は、使用されている mysqli がシングルトン オブジェクトの mysqli 接続と同じではないことを示しました。

最後に、Zend Framework の唯一の問題は、準備関数が null を返しても失敗しないことです。この問題が発生している場合は、=== を使用して、接続が以前に開始したものと実際に同じであることを確認してください。

于 2009-06-01T12:10:04.713 に答える