2011-01-31 6 views
5

나는 noob-의 비트와 나는 힘든 시간을 보내고 있습니다 ... PHP 및 MySQL을 체크 테이블이 비어있는 경우가

이 난을 찾기 위해 DB 테이블을 검색 코드의 비트를 필요 $ id 변수와 일치하는 행. 저 테이블에 '묘사'란 필드가있어서 잡아야 해. 그것이 null이면 다른 메시지가 아닌 하나의 메시지를 표시해야합니다.

$query = "SELECT description FROM posts WHERE id = $id"; 
$result = mysqli_query($dbc, $query); 

$row = mysqli_fetch_array($result, MYSQLI_ASSOC) ; 

if(!$row){ 
echo "<p>'No description'</p>"; 
} else { 
echo '<p>' . $row['description'] . '</p>'; 
} 
+0

오 - 여기에 그 일이 있습니다. db의 데이터에 관계없이 설명을 반환합니다. – user517593

+0

일부 세미콜론과 그 외의 것들도 누락되어 있습니다; p –

+0

if ($ row <= 0) echo 'empty'; else echo $ row [ 'description']; 그것은 나에게 너무 잘 작동합니다. 또는 mysql_num_row() 함수를 사용하여 결과를 제어하십시오. – B4NZ41

답변

11

mysqli_fetch_array 행을 가져옵니다 상관없이 여기에 내가 가지고있는 코드 (난 그냥 메모리에서이 진짜 빨리 일의 mysqli 탈출 문자열을 추가 할 필요가 알고있다)이다 그 행의 열이 null의 경우 $row['description'] 대신 $row가 설정되어있는 경우로 설정되어있는 경우가 확인되고 싶지 :

$query = "SELECT description FROM posts WHERE id = $id"; 
$result = mysqli_query($dbc, $query); 

$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

if(isset($row['description'])) { 
    echo "<p>No description</p>"; 
} else { 
    echo '<p>' . $row['description'] . '</p>'; 
} 

편집 :

:은 또는, 대안으로, 당신은 설명이 NULL 데이터베이스에서 행을 가져올 수 없습니다
$query = "SELECT description FROM posts WHERE id = $id AND description IS NOT NULL LIMIT 1"; 
$result = mysqli_query($dbc, $query); 

$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

if(! $row) { 
    echo "<p>No description</p>"; 
} else { 
    echo '<p>' . $row['description'] . '</p>'; 
} 

이제 행을 가져 왔는지 여부를 확인합니다.

+0

한번도 'LIMIT 1'을 잊지 마시고 전체 테이블을 한번보고 싶지는 마십시오. id가 물론 유일하다고 가정하고 id가있는 행을 찾습니다. – Phoenix

+0

그 중 하나입니다! 굉장해. – user517593

+0

@Phoenix, 귀하의 제안에'LIMIT 1 '을 추가해 주셔서 감사합니다. – Josh

2

방법에 대해 :

SELECT COUNT(*) FROM table WHERE `description` IS NOT NULL 
+0

그러나 그것은 나에게 카운트를 줄 것이다. 나는 mysqli_num_rows를 시도하고 "if == 0, if this ... if if == 1, do this if"와 같은 명령문을 실행했지만, 필드에 무엇이 있는지 검사하지 않고 각각 하나가 거짓 긍정을 되 돌렸다. . – user517593

+0

이것은 그가 묻는 것을 달성하는 데 도움이되지 않을 것입니다 ... – Josh

+0

그걸 고치 셨습니다 ... – Josh

2

!$row은 레코드가없는 경우에만 발생합니다. 필드 설명은 정말 null 경우, 당신이 이런 식으로 확인해야합니다 :

if(is_null($row['description'])){ 

을하지만 값이 비어 있는지 확인하는 것이 좋습니다 (또는 0 또는 null) :

BTW
if(empty($row['description'])){ 
2

, 당신은 COALESCE를 사용하여 쿼리 내에서 검사를 수행 할 수 있습니다 description 필드의 값이있을 때

$query = "SELECT COALESCE(description, 'No description') FROM posts WHERE id = $id"; 
$result = mysqli_query($dbc, $query); 

$row = mysqli_fetch_array($result, MYSQLI_ASSOC) ; 
echo $row['description']; 

이 방법은, 그것은 그렇지 않으면 0123를 표시됩니다이 출력됩니다. 그렇게하면 PHP의 조건 if을 없앨 수 있습니다.

+1

더하기 간결한 코드. "설명이 null"인 경우 출력을 변경하는 것보다 많은 결과가 발생하지만 이는 잘못된 것입니다. – davogotland

+0

고마워 Sarfaz, 나는 그것을 몰랐다. – PruitIgoe

+0

@dav :'COALESCE'는 NULL이 사용자 친화적 인 메시지로 팝업되는 것을 멈추게합니다. 그것은 OP가 PHP로 무엇을하고 있었는지와 근본적으로 같습니다 :) – Sarfraz