2013-06-17 5 views
1

나는 이상한 문제가있어서 무슨 일이 일어나는지 알 수있다. 오류가 표시되지 않고 var_dump$stmt을 입력 했으므로 아무 것도 반환하지 않습니다.mysqli php sql 문이 실행되지 않는다.

필자가 검색하려고하는 테스트 데이터가 정확하고 phpmyadmin을 통해 수동으로 구문을 시도 할 때 완벽하게 완성되어 어떤 아이디어도 얻을 수 없습니까?

$sql = "SELECT UserID,Password FROM Account WHERE ProfileName = ? OR Email = ? LIMIT 1"; 
$stmt = $conn->prepare($sql); 
$username = strtolower($username); 
$stmt->bind_param('ss', $username, $username); 
$stmt->bind_result($userID, $dbPassword); 
$stmt->execute(); 
$stmt->fetch(); 
+0

'$ username'을 두 번 바인드 하시겠습니까? – Kevin

+2

오류 처리에 대해 들어 본 적이 있습니까? – Kermit

+0

글쎄,하지만 그들은 아무 것도 일어나지 않았기 때문에 변수 이름을 바꾸려고 시도했습니다. – Ardenexal

답변

2

bind_result() 호출하지 전에 execute() 후에 수행해야합니다. Manual에서

$stmt->bind_param('ss', $username, $username); 
$stmt->execute(); 
$stmt->bind_result($userID, $dbPassword); 
$stmt->fetch(); 

:

로 변경 모든 열이 mysqli_stmt_execute 후 구속해야한다는

주()와 mysqli_stmt_fetch를 호출하기 전에(). prepare()이 실패하면

if($stmt = $conn->prepare($sql)) 
{ 
    $stmt->bind_param('ss', $username, $username); 
    $stmt->execute(); 
    $stmt->bind_result($userID, $dbPassword); 

    if($stmt->num_rows > 0) 
    { 
     $stmt->fetch(); 
    } 
    else 
    { 
     echo 'Query succeeded, but no rows found!'; 
    } 
} 
else 
{ 
    echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
    // use trigger_error() not echo in production, after development 
} 

, 그것은 하나 연결 오류, 구문이 의미가있는 행이있는 경우

또한, 이후 다음 prepare()가 성공했을 경우 확인하여 문제를 좁힐 수 있습니다 오류 또는 누락 된 테이블/필드 이름.

+0

이 아무런 변화가 없다고 생각했지만 어쨌든 – Ardenexal

+0

내 편집을 보아라. 문제가 좁혀 야한다. – MrCode

+0

준비 문이 true를 반환하여 dosent가 문제가되는 것 같다. – Ardenexal

관련 문제