2017-09-16 10 views
0

私はmysqliを初めて使用しています。私はmysqlのデータベースに接続して、いくつかのデータを取得しています。

$user_id = "CCD_00005"; 

    /* create a prepared statement */ 
    if ($stmt = mysqli_prepare($GLOBALS['conn'], "SELECT user_name FROM user_master WHERE user_id=?")) { 

     /* bind parameters for markers */ 
     mysqli_stmt_bind_param($stmt, "s", $user_id); 

     /* execute query */ 
     mysqli_stmt_execute($stmt); 

     /* bind result variables */ 
     mysqli_stmt_bind_result($stmt, $user_name); 

     /* fetch value */ 
     mysqli_stmt_fetch($stmt); 

     echo("Total Results:".$stmt->num_rows."<br />"); 

     printf("%s is having name %s\n", $user_id, $user_name); 

     /* close statement */ 
     mysqli_stmt_close($stmt); 
} 

私は助けてくださいなぜ私は1

として行数を取得しておりません結果にTotal Results:0 CCD_00005 is having name sdafasdf

を取得しています。

+1

あなたが必要な場合があります '$ stmt->のstore_result()'最初のあなたは、行の数を確認することができます前に。 – Tolios

+2

mysqli_stmt :: $ num_rowsのマニュアルから:*結果セットの行数を返します。mysqli_stmt_num_rows()の使用は、mysqli_stmt_store_result()を使用して結果全体をバッファリングするかどうかによって異なります'mysqli_stmt_store_result()'を使うとすぐに 'mysqli_stmt_num_rows()'が呼ばれることがあります。* " – Qirel

+0

NB:質問を閉じるために使用された複製は**"関連 "の下に見つかりました**画面の右側にある領域。 –

答えて

1

変化として下記のお実行順序:

$user_id = "CCD_00005"; 

    /* create a prepared statement */ 
    if ($stmt = mysqli_prepare($GLOBALS['conn'], "SELECT user_name FROM user_master WHERE user_id=?")) { 

     /* bind parameters for markers */ 
     mysqli_stmt_bind_param($stmt, "s", $user_id); 

     /* execute query */ 
     mysqli_stmt_execute($stmt); 

     mysqli_stmt_store_result($stmt);   
     echo("Total Results:".mysqli_stmt_num_rows($stmt)."<br />"); 

     /* bind result variables */ 
     mysqli_stmt_bind_result($stmt, $user_name); 

     /* fetch value */ 
     mysqli_stmt_fetch($stmt); 


     printf("%s is having name %s\n", $user_id, $user_name); 

     /* close statement */ 
     mysqli_stmt_close($stmt); 
関連する問題