2011-12-11 4 views
0

카운트를 얻으 려하고 0 대신 1을 얻습니다. 나는 철저히 웹과이 사이트를 보았다. 나는 오랫동안 혼자서 알아 내려고 노력해왔다. 나는 여기 빈 손으로 계속 간다.비어있을 때 mysql_query에서 1을 반환하지 않는 PHP 카운트

그래서 기본적으로 사용자가 좋아하는 시스템을 만드는 것입니다. 한 가지를 제외하고 계산이 제대로 작동하려면 모든 것을 얻을 수 있습니다. 그들이 그것을 좋아할 때 그것은 0이어야하는 1을 반환합니다.

여기 내 계산 코드입니다. 나는 보안상의 이유로 모든 코딩을 게시하는 것이 아니며 나머지 부분이 아닌 계산 부분에 대해서는 실제로 필요하지 않습니다.

$sql_like = mysql_query("SELECT * FROM posts WHERE mem2_id='$id' ORDER BY post_date DESC LIMIT 40"); 

while($row = mysql_fetch_array($sql_like)){ 

$like1 = $row['like_array']; 
$like3 = explode(",", $like1); 
    $likeCount = count($like3); 


} 

숫자를 결정하는 코드는 다음과 같습니다. 어떤 아이디어가 잘못 되었나요? 아이템이 비어있을 때 1이 0이 아닌 것을 반환하는 이유는 무엇입니까?

답변

0
// you do escape your id right??? (sql injection prevention) 
$sql_like = mysql_query("SELECT * FROM posts WHERE mem2_id='$id' ORDER BY post_date DESC LIMIT 40"); 

while($row = mysql_fetch_array($sql_like)){ 
    $likeCount = 0; 
    $like1 = trim($row['like_array']); 
    if ($like1) { 
     $like3 = explode(",", $like1); // exploding emtpy string would result in array('') 
     $likeCount = count($like3); 
    } 
} 
+0

난 항상 해킹 다른 유형의 다른 것들뿐만 아니라 탈출을 사용하는 데 도움이되기를 바랍니다. – user1079456

+0

정확하게 감사 드려야 할 것이 었습니다. 나는 이것이 다른 사람들에게도 도움이되기를 바랍니다. – user1079456

0

빈 문자열에 explode을 호출하면 빈 문자열을 포함하는 배열이 제공됩니다. 이것은 0이 아닌 하나의 요소입니다.

가능한 경우 데이터베이스 디자인을 변경하여 값을 쉼표로 구분하여 저장하지 않는 것이 좋습니다. 대신 별도의 표를 사용하십시오.

데이터베이스 디자인을 변경할 수없는 경우 빈 문자열을 별도로 처리 할 수 ​​있습니다.

0

count()는 배열 또는 객체의 어떤 수 (PHP: count - Manual)의 색인 수를 반환합니다. 문자열 VAR는 배열보다는 오히려 사용하거나 그것을 시도하여 0

당신이 한번 풀어 줄 수 반환하기 위해 null 값을 얻을 수있다 1. 반환 객체입니다

경우 :

print count(""); 
을 당신이 배열로 SQL 출력을 중단하고 if 문 다음으로 검사를 실행() 폭발 사용하는 경우

print count(null); 

당신은 더 나은 행운을해야합니다. 다음과 같은 뭔가 :

$like3 = explode(',',$like1); 
if (count($like1)=1 && $like1[0] == '') 
     // etc .. 

나는이

관련 문제