2011-11-12 15 views
2

デバッグ処理中に、スクリプトが$stmt->fetch() or die($stmt->error);行で消滅していることに気付きました。 PHPログにエラーはありません。また、エラーをエコーし​​ません。コードに間違った部分がありますか?Prepared statements error

$stmt = $db->prepare("SELECT e.msg_subject AS subject, e.msg_text AS text, u.fname AS firstname, u.lname AS lastname FROM emails AS e, users AS u WHERE e.msg_status=? AND e.msg_type=? AND u.id=?") or die($db->error); 
    $stmt->bind_param("isi", $status, $type, $userid) or die($stmt->error); 
    $stmt->execute() or die($stmt->error); 
    $stmt->bind_result($subject, $text, $firstname, $lastname) or die($stmt->error); 
    $stmt->fetch() or die($stmt->error); 
    $stmt->close(); 

答えて

2

問題は何行がSQL文で取得されていない場合$stmt->fetch()リターンがFALSEブールということです。だから、あなたは、行の数をチェックする必要があります。

if ($stmt->num_rows > 0) { 
    $stmt->fetch() or die($stmt->error); 
} 
+0

は私のMySQLの構文に何か問題はありますか? –

+0

Nope。私は思っていません。与えられたステータスとタイプを持つ、指定されたユーザのすべてのメッセージを返します。 –

+0

ここで、 'if($ stmt-> rowCount()> 0){'定義されていないメソッドを呼び出すmysqli_stmt :: rowCount() –

関連する問題