簡體   English   中英

空的PHP計數從mysql_query返回1而不是0

[英]php count returning 1 not 0 from mysql_query when empty

我試圖得到一個計數,我從中得到1而不是0。 我已經仔細地瀏覽了網站和本網站。 很長時間以來,我甚至一直試圖自己解決這個問題。 我一直空着手過來。

因此,基本上我想做的就是為我的用戶創建一個類似的系統。 我可以使所有工作正常進行,除一件事外,其他所有工作都可以進行。 當他們喜歡它時,它返回1而不是0,應該是0。

這是我的計數代碼。 由於安全原因,我並沒有發布所有編碼,而實際上它並不需要,因為它是關於計數部分而不是其余部分。

$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?

在空字符串上調用explode得到一個包含空字符串的數組。 這是一個元素,而不是零。

我建議您盡可能更改數據庫設計,以免存儲用逗號分隔的值。 請改用單獨的表。

如果您無法更改數據庫設計,則可以單獨處理空字符串。

// 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);
    }
}

count()返回數組或對象中某些內容的索引數( PHP:count-Manual )。

如果使用字符串var而不是數組或對象,則它返回1。它必須獲取null值才能返回0。

您可以嘗試以下方法:

print count("");

print count(null);

如果使用explode()將sql輸出拆分為一個數組,然后使用if語句運行檢查,那么會更好。 類似於以下內容:

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

我希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM