簡體   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