繁体   English   中英

计算不为空的特定mysql列的行数

[英]Count number of rows of specific mysql columns that are not empty

我有一个带有x个列的mysql表。 我想检查特定列的行是否为空..

目前我有:

$query10 ("SELECT count(*) FROM content WHERE linkname IS NOT NULL")     or die(mysql_error());
$result10 = mysql_query($query10);
$row10 = mysql_fetch_assoc($query10);
echo $row10['0']; 

但是我得到一个错误:

致命错误:函数名称必须是第227行上的...中的字符串

在使用num_rows ..之前,我从未使用过count,但似乎也无法使用它。

因此,为了清楚起见,我的桌子看起来像

|  column1  |   column2   |   column3  |
--------------------------------------------
|     a     |      b       |              |
---------------------------------------------
|     a2    |      b2      |      c2      |
----------------------------------------------
|     a3    |      b3      |              |

我要对不为空的column3的所有行进行计数,因此在这种情况下count的结果应为1。

计数产生以下错误:

mysql_fetch_assoc()期望参数1为资源,给定字符串

非常感谢

您需要使用IS NOT NULL <> ''

SELECT count(*) FROM content WHERE linkname <> ''

SQL小提琴演示

正如Murtaza Bhurgri所说的那样, $query10 ("SELECT count(*) FROM content WHERE linkname IS NOT NULL") or die(mysql_error()); 这肯定会带来错误。 它应该像

$query10 = "SELECT count(*) FROM content WHERE linkname <> ''";
$result10 = mysql_query( $query10 );
if ( !$result10 ) {
    die( 'Invalid query: ' . mysql_error() );
}
$row10 = mysql_fetch_assoc($result10);
echo $row10[0]; 

我想出了这个,它的工作原理是:

$query10 = "SELECT count(*) as total FROM content WHERE linkname <> '' AND content.album_id = $album_id  ";
$result10 = mysql_query( $query10 );
if ( !$result10 ) {
    die( 'Invalid query: ' . mysql_error() );
}
$row10 = mysql_fetch_assoc($result10);
echo "zo veel:".$row10[total]; 

我添加了“ content.album_id = $ album_id”,因为我只希望针对更具体的列

很抱歉,处于不推荐使用的模式..

mysql_connect('localhost', 'root', 'password');
mysql_select_db('database');

$query10 = "SELECT COUNT(linkname) AS linkname_rows_count FROM tbl WHERE linkname != '' AND linkname IS NOT NULL";
$result10 = mysql_query($query10);

if(isset($result10)) {
    $row10 = mysql_fetch_assoc($result10);
    echo $row10['linkname_rows_count'];
}

您提到的特定列中的行可能包含空字符串或null值。 您使用的查询仅检查null值。 此外,每当将COUNT函数与传入其参数的列一起使用时,都应为其分配别名以使result set易于处理。

另外,您的代码使用不建议使用的mysql扩展。 您需要迁移到mysqliPDO以保护代码免受SQL Injection等攻击。 因此,我还为您提供了使用mysqli函数编写的替代代码。

$con = mysqli_connect('localhost', 'root', 'password', 'database');
$sql = "SELECT COUNT(linkname) AS linkname_rows_count FROM tbl WHERE linkname != '' AND linkname IS NOT NULL";
$query = mysqli_query($con, $sql);

if(isset($query)) {
    $result = mysqli_fetch_assoc($query);
    echo $result['linkname_rows_count'];
}

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM