首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PHP 判斷 MySQL 結果集是否為空:mysql_fetch_array() 正確用法與避坑

     編輯:MySQL 綜合教學

核心邏輯

mysql_fetch_array() 讀取下一列,若結果集為空或已讀完,回傳 false。利用此特性可判斷是否有資料。

正確寫法(兩種等價)

方法一:empty() 判斷

$sql = "SELECT * FROM abc";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

if (empty($row)) {
    echo "null";  // 無資料
} else {
    echo "not null";  // 有資料,$row 已是第一列
    // 可繼續 while 處理後續列
}

方法二:! 判斷

$row = mysql_fetch_array($result);
if (!$row) {
    echo "null";
} else {
    echo "not null";
}

嚴重避坑:不要加 or die()

// 錯誤!結果集為空時 mysql_fetch_array 回傳 false,觸發 die()
$row = mysql_fetch_array($result) or die(mysql_error());

後果:正常的空結果集會被誤判為錯誤,導致腳本異常終止。

現代化建議

  • ext/mysql 已於 PHP 7.0 移除,請改用 mysqli 或 PDO。
  • mysqli 範例:
$stmt = $mysqli->prepare("SELECT * FROM abc");
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows === 0) {
    echo "null";
} else {
    $row = $result->fetch_assoc();
    echo "not null";
}

總結

  1. 用 mysql_fetch_array() 回傳值直接判斷真偽。
  2. 切勿搭配 or die()。
  3. 盡快遷移至 mysqli/PDO。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved