2013-07-26 3 views
0

아래 코드에서 if 문은 TRUE로 간주되는 곳에 FALSE로 평가됩니다. 내가 뭘 잘못 생각하니?if 문이 예상대로 평가되지 않습니다.

$sql = "SELECT * FROM LIVE";  
$res = mysqli_query($con, $sql); 
while ($result = mysqli_fetch_assoc ($res)){ 
var_dump($result['LIVE']); //string '1' (length=1) 
echo $result['LIVE']. "<br>"; //1 
} 
$a = "1"; 

if($result['LIVE'] == $a){ 
echo "It is live!"; 
} 
else { 
echo "not live!"; //this gets echoed 
} 

나는, " '따옴표

및 BIT에 MYSQL 테이블의 컬럼에 대한 데이터 및 데이터 유형을 변경하는 따옴표의 모든 변화를 시도하지 않은, CHAR, INT

및 CAST에서 BOOL에 PHP와 '정수'

AND 연산자 등을 변경 = == ===도 아닌 단지 $을 전달하는 등의 도시) (경우

(A) 내로 입력 시도 ND $result = $result['LIVE']; 그리고 $ 결과가 전달됩니다.

나는 PHP type comparison tablesPHP type juggling을 비롯하여 설명서 if(), while(), mysqli_fetch_array() 기타 모든 관련 부분을 읽었으므로이 문제를 직접 해결할 수 없습니다.

나는 여전히 PHP를 배우고 있으며 쉽게 수정할 수 있다고 확신하지만 나는 그것을 볼 수 없다.

+0

PHP에서'=='를 사용하면 겁이납니다. 나는 드물게 그것을 사용한다 – binnyb

답변

1

값을 저장하지 않으려면 $result; while 루프의 마지막 반복 중에 루프 $result은 더 이상 행이 통과하지 않으므로 false로 설정됩니다. 이것은 또한 while 루프를 빠져 나갈 수있는 요인입니다.

다른 임시 변수로 값을 설정해야합니다.

while ($result = mysqli_fetch_assoc ($res)){ 
$temp = $result['LIVE']; //1 
} 
$a = "1"; 

if($temp == $a){ 
+0

감사합니다! 이게 도움이 됐어. – rosscosack

1

while 문 종료 $가거짓이 된 결과 때문이다. 따라서 $ result [ "live"]를 호출 할 때 이미 false이되었습니다.

조건문 바로 앞에

 

var_dump($result); 
 
을 입력하여 간단히 확인할 수 있습니다.

$ a = 1을 보장하려면 루프 내에서 해당 진술서를 발행해야합니다.
문제가 해결 될 것입니다.

희망 사항이 명확하고 희망적입니다.

0

while 루프가 반복되어 루프를 통과 할 때마다 $ result를 mysqli_fetch_assoc() 값으로 설정합니다. mysqli_fetch_assoc()에 더 이상 결과가 없으면 false를 반환한다. 따라서 $ result === false를 평가하려고 할 때 false. PHP에서 false를 울리는 것은 아무 것도 출력하지 않습니다. 에코! 거짓 출력 1.

0
$result = ""; 

$sql = "SELECT * FROM LIVE";  
$res = mysqli_query($con, $sql);` 
while ($result = mysqli_fetch_assoc ($res)){ 
$result = $result['LIVE']; 
echo $result['LIVE']. "<br>"; //1 
} 
$a = "1"; 

if($result == $a){ 
echo "It is live!"; 
} 
else { 
echo "not live!"; //this gets echoed 
} 
관련 문제