2017-09-14 10 views
0

この行をフェッチして$notescheckに保存しますが、これを実行しようとすると$notescheckはエコーしてエラーがない場合は空です。準備されていないステートメントでは正常に動作します。

プリペアドステートメントフェッチ行は何も返しません

コード:非プリペアドステートメントには次のようになりますと

if($user_ok == true) { 
    $sql = "SELECT notescheck FROM users WHERE username=? LIMIT 1"; 
    $stmt = $conn->prepare($sql); 
    $stmt->bind_param("s",$log_username); 
    $stmt->execute(); 
    $row = $stmt->fetch(); 
    $notescheck = $row[0]; 
    $stmt->close(); 
} 

if($user_ok == true) { 
    $sql = "SELECT notescheck FROM users WHERE username='$log_username' LIMIT 1"; 
    $query = mysqli_query($conn, $sql); 
    $row = mysqli_fetch_row($query); 
    $notescheck = $row[0]; 
    mysqli_close($conn); 
} 

答えて

1

これは(フェッチされていないか)プリペアドステートメントで動作し、あなたの」あなたが思っているように配列を取得しないでください。また、selectの結果を変数にバインドし、それを表示に使用する必要があります。ユーザー名= xを一致

http://php.net/manual/en/mysqli-stmt.fetch.php

複数のレコードは次のようになります:

if($user_ok == true) { 
     $sql = "SELECT notescheck FROM users WHERE username=? LIMIT 1"; 
     $stmt = $conn->prepare($sql); 
     $stmt->bind_param("s",$log_username); 
     $stmt->execute(); 
     $stmt->bind_result($notescheck); 
     $stmt->store_result() 
     while($stmt->fetch()){ 
      echo $notescheck; 
     } 
     $stmt->close(); 
    } 
を複数のレコードがある場合は、あなたがこれを読んでに確認する必要があります while($stmt->fetch){ echo $notescheck };

if($user_ok == true) { 
    $sql = "SELECT notescheck FROM users WHERE username=? LIMIT 1"; 
    $stmt = $conn->prepare($sql); 
    $stmt->bind_param("s",$log_username); 
    $stmt->execute(); 
    $stmt->bind_result($notescheck); 
    $stmt->fetch(); 
    $stmt->close(); 
} 
echo $notescheck; 

を使用したいです

関連する問題