2017-12-22 14 views
-1

次のコードはエラーを返していますが、その理由を理解できません。誰かが私の状況についていくつかの光を当ててください。ありがとう。キャッチされないエラー:booleanでメンバー関数execute()を呼び出す

私の注文テーブルには、id、userID、amount、dateという列があります。 var_dumpの両方が正しい値を返します。

var_dump($_SESSION['u_id']); 
var_dump($_SESSION['$s']); 
$newOrder = $conn->prepare("INSERT INTO order (userID, amount) Values ('{$_SESSION['u_id']}','{$_SESSION['$s']}')"); 
$newOrder->execute(); 

完全なエラーMSG

Fatal error: Uncaught Error: Call to a member function execute() on boolean in /storage/ssd5/805/4077805/public_html/checkout.php:10 Stack trace: #0 {main} thrown in /storage/ssd5/805/4077805/public_html/checkout.php on line

+0

返されたエラーが分かっていると分かります。 –

+0

prepare文がfalseを返しました。つまり、クエリに問題があります。 – aynber

+0

ドキュメントをお読みになりましたか? 'prepare'が' false'を返すのは正常です。クエリに何か問題があります。 –

答えて

0

機能$conn->prepare() DBオブジェクトを返すか、呼び出しに失敗しませんでした。あなたのSQLをチェックし、それをエコーし​​てdbコンソールで実行して確認することができます。

-1

mysqli_stmt :: prepareは、成功した場合はTRUEを返し、失敗した場合はFALSEを返します。 私の推測では、クエリを準備しようとするとエラーが発生したということです。 私はあなたが正しい方法でパラメータを渡しているとは思わない。

$conn->prepare("INSERT INTO order (userID, amount) Values (".$_SESSION['u_id'].",".$_SESSION['$s']".)") 

しかし、それは、私はあなたにもそれを

を正しい方法を行うためにhttp://php.net/manual/en/mysqli-stmt.bind-param.phpで見てくださいので、あなたが上で実行を実行する必要があり、SQLインジェクションからあなたを保護しません:私はあなたがする意図だと思います接続は次のようになります。

$conn->execute(); 
+0

アドバイスありがとうございました病気になっていることを確かめてください。注文は予約済みのmysql作業であるため、テーブルの名前を変更するだけで済むようになりました。 – Oleeze

+0

'prepare()'は 'TRUE'ではなく' mysqli_stmt'を返します。 – Barmar

+0

@Barmarそれは同じ準備をしていない限り、私はこれを参照していた:http://php.net/manual/en/mysqli-stmt.prepare.php –

関連する問題