Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当php计数为空时,从mysql\u查询返回1而不是0_Php_Mysql - Fatal编程技术网

当php计数为空时,从mysql\u查询返回1而不是0

当php计数为空时,从mysql\u查询返回1而不是0,php,mysql,Php,Mysql,我试图得到一个计数,我得到的是1而不是0。我已经彻底浏览了网站和这个网站。很久以来,我甚至一直在试图自己解决这个问题。我总是空手而来 所以基本上我想做的就是为我的用户创建一个类似的系统。我可以让一切正常工作,除了一件事。当他们喜欢它时,它会返回1,而不是应该返回的0 这是我的计数代码。出于安全原因,我没有发布所有的编码,而且它真的不需要发布,因为它是关于计数部分,而不是其他部分 $sql_like = mysql_query("SELECT * FROM posts WHERE mem2_id=

我试图得到一个计数,我得到的是1而不是0。我已经彻底浏览了网站和这个网站。很久以来,我甚至一直在试图自己解决这个问题。我总是空手而来

所以基本上我想做的就是为我的用户创建一个类似的系统。我可以让一切正常工作,除了一件事。当他们喜欢它时,它会返回1,而不是应该返回的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会给出一个包含空字符串的数组。这是一个元素,不是零

如果可能的话,我建议您更改数据库设计,这样您就不会存储用逗号分隔的值。请使用单独的表格


如果无法更改数据库设计,则可以单独处理空字符串。

count返回数组或对象中的索引数

// 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);
    }
}
如果使用字符串变量而不是数组或对象,则返回1。它必须获取null值才能返回0

您可以尝试一下:

print count("");

如果使用explode将sql输出分解为一个数组,然后使用if语句运行检查,那么您的运气会更好。如下所示:

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

我希望这有帮助

我总是使用escape以及其他东西来进行其他类型的黑客攻击。这正是我所需要的。非常感谢。我希望这对其他人也有帮助。
$like3 = explode(',',$like1);
if (count($like1)=1 && $like1[0] == '')
        // etc ..