[英]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.