2012-01-04 6 views
0

ここに私のコードは、コードが常にNo rows foundエコーMySQLiをNUM_ROWS戻り0

$stmt = $conn->mysqli->stmt_init(); 
$stmt = $conn->mysqli->prepare('SELECT Username, EmailVerified, Blocked FROM user WHERE Email = ? AND SLANumber = ? AND Password = ?'); 
$stmt->bind_param('ssb', $_POST['EmailID'], $_POST['SLANumber'], $_POST['Password']); 
$stmt->execute(); 
$stmt->store_result(); 
$result = $stmt->get_result(); 
if($result->num_rows == 0){ 
    echo 'No rows found'; 
} 
else{ 
    // Continue processing here 
    ..... 
} 

です。それ以前には、うまくいきました。

期待どおり、クエリを直接実行すると、目的の結果が得られます。

コードに問題がありますか?

+0

は、なぜあなたは送信され、 '$ _POST [ 'パスワード']'ブロブ 'B'の代わりに、文字列 'S'として? –

+0

@Michael:私はphp.netのドキュメントでそれを読んでいます。 –

答えて

1

num_rowsは、結果リソースではなくmysqli_stmtのプロパティです。したがって、あなたはしなければなりません:

$result = $stmt->get_result(); 

// Also check strict comparison against int 0, 
// to avoid incorrect equality with boolean FALSE 
if($stmt->num_rows === 0){ 
    echo 'No rows found'; 
} 
+0

またResultのプロパティです。 http://in2.php.net/manual/en/mysqli-result.num-rows.phpを参照してください。 –

+0

$ stmt-> num_rowsを使用すると、0が返されます。 –

+0

OK。トリプルを使用===トリックをした。ありがとう –

1

同じステートメントでstore_resultとget_resultを一緒に使用しないでください。

"num_rows"、 "bind_result"、および "fetch"でstore_resultメソッドを使用します。

get_resultメソッドの場合は、 "affected_rows"と "fetch_array"を使用します。所得get_resultメソッドの "num_rows"プロパティは、次のように使用できます。

$stmt->execute(); 
// $stmt->store_result(); 
$result = $stmt->get_result(); 
if(result->num_rows == 0){ 
    ... 
} 

OR

$stmt->execute(); 
// $stmt->store_result(); 
$result = $stmt->get_result(); 
if($stmt->affected_rows == 0){ 
    ... 
} 
関連する問題