计算非空的特定mysql列的行数

时间:2017-01-14 10:36:09

标签: php mysql count rows

我有一个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之前,我从未使用过计数..但似乎无法使用它...

所以说清楚,我的表看起来像

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

我想计算非空列的al3行,因此在这种情况下,count的结果应为1。

计数会产生以下错误:

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

非常感谢

3 个答案:

答案 0 :(得分:1)

您需要使用<> ''

IS NOT NULL个身份

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

SQL Fiddle Demo

正如 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]; 

答案 1 :(得分: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]; 

我添加了&#39; content.album_id = $ album_id&#39;,因为我只想要更具体的列

抱歉处于弃用状态..

答案 2 :(得分:0)

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'];
}

希望它有所帮助!