2009-05-30 10 views
0

私はそれを再現する簡単な方法がないので、これはひどい疑問です。しかし、私はZend Frameworkを使ってOS XのMySQLデータベースに接続しています。mysqliオブジェクトのprepare関数を呼び出すとnullが返ることがあります。 prepare関数の戻り値は、falseまたは文オブジェクトです。mysqli-> prepare関数がnullを返す

私はprepare文が失敗している理由に関する情報をどこから探すべきか分かりません。準備プロセスに可視性を与えて、なぜそれが失敗しているのかを確認する方法はありますか?トランザクションが開いている間、私のすべての問題が発生しています。

ご迷惑をおかけして申し訳ございませんが、どうしてこのようなことが起こっているのかは分かりません。 、 配列( 'キー' => $ fooの、「の値

+0

を失敗しましたnull値、var_dump($ stmt)? b)$ mysql-> errorにはこの場合有用なエラーメサージが含まれていますか? – VolkerK

答えて

0

例は
$が= $ DB->クエリ( ':キー、値)のサーバ。INSERT INTO(キー、値)VALUES(' 結果ステートメントを準備しました'=> $バー)

あなたは私たちがあなたのDBクエリをお知らせすることはできますか?

試してみて、テストデータを使用してDBのクエリを実行し、クエリがで開始することが正常に動作している場合参照してください。クエリがOKであれば、私たちは、

1

ToughPalを修正するには、

を使用する必要があります。

mysqli_query($ db、 "INSERT INTO table(variable1、variable2)VALUES(hello、mynameis);

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

テーブル名、列名、および値のデータは、バックティックエスケープで囲ってください。

0

私は週末にこの問題を発見することができましたが、実際には原因だけでなく症状を修正することができました。

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

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

0

あなたはこの

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
$query = "..."; 
$mysqli->prepare($query); 

ような何かをやっているならば、あなたは(準備理由について有益なエラーを表示する次のmysqli::$errorを検査することができます)は、A)あなたはそれがだと絶対にpositivだ

print_r($mysqli->error); 
関連する問題