2016-05-21 13 views
0

phpとmysqliを使用してデータベースへの接続を開き、準備が整った文を使用していくつかのクエリを実行し、すべてがうまく動作するが、このクエリでは、将来的には私はどういうわけか、すぐに私はGETDATE()にすると、文の行を準備することをPHP MYSQLI prepared statement datetimeとGetdate()との比較エラー

date_default_timezone_set('America/Denver'); 

if(!($stmt = $con->prepare("SELECT r.destination, r.startDepartureTime, r.seats, r.priceperseat FROM ride r WHERE r.startZipCode = ? AND r.startDepartureTime > GETDATE()"))) echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error; 

if(!$stmt->bind_param("i", $userZipCode)) echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error; 

$stmt->execute(); 

$stmt->store_result(); 
$stmt->bind_result($destination,$departure,$seats,$price); 

while($stmt->fetch()){ 
    echo "Destination : $destination Departure Time : $departure Seats Available : $seats Price Per Seat : $price <br>"; 
} 

$stmt->close(); 

PHPのエラーログレポートに比較を追加すると失敗しています

PHPのお知らせ:非のプロパティを取得しようとすると、オブジェクト

したがってbind_paramライン上で、我々は

PHPの致命的なエラーが出ること:ソリューションのすべてを非オブジェクト

私はもともとNOW(使用しようとしていた上のメンバ関数bind_param()の呼び出し)が、試してみましたこのスレッドでSQL NOW() function not working properlyと運がなかった。

r.startDepartureTime> GETDATE()の比較をしないで文を実行すると、すべて正常に動作します。

私のデータベースのstartDepartureTime列がdatetime型であることを確認しました。ここには例があります:2016-05-21 10:24:00私が確かにしたことは、空のセットを受け取っただけではないことを保証するために、現在の時刻と同じ郵便番号の中で確かに大きいです。

+0

からエラーを取得するには、接続$conを使用する必要があり、この場合のように、あなたは 'これらのエラーを取得 - >が準備を()'失敗していますが、エラーをキャッチいけないし、ちょうどあなたのコード – RiggsFolly

答えて

0

GETDATE()たぶんあなたがする何を意味するかの準備は、あなたが必要な障害が発生した場合よりも少ないのではなく、クエリr.startDepartureTime < NOW()

でより大きいを使用しているNOW()はあなたが

を必要とするものである必要があり、MYSQLの機能ではありません単にエラーを報告するよりポジティブなことをする。だから、この種のコードはうまくいくでしょう。

また、準備が失敗した場合、$stmtfalseに設定されているため、$stmt->errnoなどを使用すると機能しなくなり、実際にはもっと紛らわしいエラーメッセージが表示されます。あなたは

$sql = "SELECT r.destination, r.startDepartureTime, 
       r.seats, r.priceperseat 
     FROM ride r 
     WHERE r.startZipCode = ? 
      AND r.startDepartureTime < NOW()"; 

$stmt = $con->prepare($sql); 

if($stmt === false) { 
    echo "Prepare failed: {$con->errno} : {$con->error}"; 
    exit; 
} 
+0

お礼を続行あなたはそのトリックをした、私はまだより大きいが欲しいと私はエラー処理のヘルプに感謝 –

関連する問題