2014-01-14 7 views
0

나는 2-3 일 동안이 문제로 내 머리를 쥐어 봤기 때문에 새로운 눈을 감사하게 생각합니다.PHP로 MySQL 쿼리에서 결과가 표시되지 않습니다.

데이터베이스를 쿼리하여 특정 결과 집합을 가져옵니다.

코드

<?php 

$_POST['custid']; 
$db=mysqli_connect("***","***","***","***"); 
// Check connection 
if (mysqli_connect_errno($db)) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$sql="SELECT DISTINCT duedate FROM invoicequote WHERE customeraccountnumber='1000001'"; 
echo $sql; 

$result=mysqli_query($db,$sql) or die(mysqli_error($db)); 
if ($result) 
{ 
    // Return the number of rows in result set 
    $rowcount=mysqli_num_rows($result); 
    printf("Result set has %d rows.\n",$rowcount); 
    // Free result set 
    mysqli_free_result($result); 
} 

while ($num = mysqli_fetch_array($result)) { 
    echo $num; 
    $duedate=$num['duedate']; 
    echo $num['duedate']; 
    print $num['duedate']; 
    mysqli_free_result($result); 
} 

mysqli_close($db); 

?> 

에코 SQL은

SELECT DISTINCT duedate FROM invoicequote WHERE  
customeraccountnumber='1000001' 

인쇄 행수가

결과 세트는 1 개의 행이 제공 준다.

필자는 PHP while 루프를 알고 있지만 오랫동안 작업 해 왔기 때문에 함수로 변환하려고 시도했기 때문에 내가 잘못한 것을 볼 수 없었습니다.

위 코드는이 부분에 문제가 있으므로 주 페이지 코드와 별도로 실행되었습니다. 이 코드는 오류를 찾기 위해 코드의 맨손으로 제거한 함수가 아닙니다.

데이터베이스 세부 정보가 제거되었습니다.

SQL 쿼리 세부 정보는 실제 가짜 계정입니다.

+3

악마 행입니까? mysqli_free_result ($ result); –

+0

언뜻 보면 두 가지가 튀어 나온다. if ($ result) 테스트에 else 절이 없으므로 결과를 얻지 못하면 스크립트가 자동으로 실패합니다. 또한 if ($ 결과 블록) 밖에서 $ result를 사용하려고합니다. 결과를 얻지 못하면 실패 할 것입니다. – GordonM

+0

else 문에 추가되어 while 루프에서 사용 가능한 결과를 제거했습니다. 지금 데이터를 잡아 내고 있습니다. GordonM과 mmiltos에게 감사드립니다. – andy

답변

0

mysqli_free_result() 함수는 결과와 관련된 메모리를 해제합니다.

당신은 빈 $result

2
// Free result set 
mysqli_free_result($result); 

희망 사항을 코드에서 읽으십시오 (두 번).

0

while($num = mysqli_fetch_array($result)){ 
} 

그것은 당신의 if 블록에서 mysqli_free_result($result);을 제거하는 등으로 간단 실행할 수 없습니다.

관련 문제