2017-09-14 6 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의 결과를 변수에 바인드 한 다음이를 사용하여 표시해야합니다. 여러 레코드가있는 경우, 당신은 당신이 읽기에 확인해야 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; 

을 사용하십시오 :

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(); 
    } 
: 일치

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

여러 기록을 = x는 다음과 같을 것이다 이름