簡體   English   中英

如何檢查 MySQL 結果在 PHP 中是否返回空?

[英]How to check if MySQL results returned empty in PHP?

如何檢查 MySQL 結果是否為空。 如果 MySQL 查詢結果為空,則不應執行 else 條件。 如果 MySQL 在那里產生數據,在其他條件下我的錯誤我的消息在那里,但它沒有顯示任何錯誤消息。 我嘗試了以下代碼,但沒有在屏幕上顯示任何警報或回顯消息。

<?php
$sql = "select * from hall_search_data_1 where rent BETWEEN '".$_SESSION['amount1']."' AND '".$_SESSION['amount2']."'";
$res = mysql_query($sql);
if (!empty($res)) {
    while ($row = mysql_fetch_row($res)) {
        // here my data
    }
} else {
    echo "no results found";
}
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"] . " - Name: " . $row["firstname"] . " " . $row["lastname"] . "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

檢查行數

$result = mysqli_query($conn, $sql);
$rowcount=mysqli_num_rows($result); 
if($rowcount > 0){ 
  echo "Number of rows = " . $rowcount;
  }
  else
  { 
  echo "no record found"; 
  }

您可以使用mysql_num_rows來獲取查詢返回的行數。

if(mysqli_num_rows($res) > 0)
{
    // rest of your stuff
}
else
{
    echo "No records found.";
}

注意:不推薦使用 mysql,而是使用mysqliPDO ,如上所示

安全提示首先停止使用mysql_*函數,因為它們在生產環境中不安全,並且更高版本已停止支持此 API。 因此,如果您不小心在生產中使用了這些功能,那么您可能會遇到麻煩。

不建議在新開發中使用舊的 mysql 擴展,因為它在 PHP 5.5.0 中被棄用,並在 PHP 7 中被刪除。下面提供了詳細的功能比較矩陣。 更多閱讀

對於您的答案,您只需檢查no of rows是否為零或不使用示例閱讀php 文檔中的這篇文章。

mysqli_num_rows

您可以使用mysql_num_rows來檢查結果集的編號:

    $sql = "select * from hall_search_data_1 where rent BETWEEN '".$_SESSION['amount1']."' AND '".$_SESSION['amount2']."'";
    $res = mysql_query($sql);
if(isset($res))
{
$noRows = mysql_num_rows($res);
    if($noRows > 0){
    while($row=mysql_fetch_row($res))
    {
    here my data 
    }
    }else{
    echo "no results found";
    echo "<br>";
    echo "<script>alert('No any result found..!!');</script>";
    echo "no results found";
    }
}

在這里找到mysql_num_rows的文檔:

mysql_num_rows

您可以像這樣用mysql_num_rows替換if(!empty($res)) -

$sql = "select * from hall_search_data_1 where rent BETWEEN '".$_SESSION['amount1']."' AND '".$_SESSION['amount2']."'";
$res = mysql_query($sql);
if($countrows = mysql_num_rows($res) >= 1){
    while($row=mysql_fetch_row($res))
    {
        here my data 
    }
}else{
    echo "no results found";
    echo "<br>";
    echo "<script>alert('No any result found..!!');</script>";
    echo "no results found";
}

mysql_* API 很久以前就從 PHP 中刪除了。 要訪問數據庫,您應該使用 PDO。 檢查 PDO 是否返回任何結果實際上非常簡單。 只需獲取結果,如果數組為空,則 MySQL 不會返回任何內容。

$stmt = $pdo->prepare('SELECT * FROM hall_search_data_1 WHERE rent BETWEEN ? AND ?');
$stmt->execute([$_SESSION['amount1'], $_SESSION['amount2']]);
$records = $stmt->fetchAll();
if ($records) {
    foreach ($records as $row) {
        // your logic
    }
} else {
    echo 'No records found!';
}

還有 mysqli 庫,如果你堅持使用它,你必須做更多的工作,但想法是一樣的。 獲取所有結果,如果沒有獲取任何結果,則意味着 MySQL 沒有返回任何行。

$stmt = $mysqli->prepare('SELECT * FROM hall_search_data_1 WHERE rent BETWEEN ? AND ?');
$stmt->bind_param('ss', $_SESSION['amount1'], $_SESSION['amount2']);
$stmt->execute();
$records = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
if ($records) {
    foreach ($records as $row) {
        // your logic
    }
} else {
    echo 'No records found!';
}

您可以使用mysql_num_rows(); 檢查您的查詢返回行與否

$sql = "select * from hall_search_data_1 where rent BETWEEN '".$_SESSION['amount1']."' AND '".$_SESSION['amount2']."'";
$res = mysql_query($sql);
$rows=mysql_num_rows($res);
if($rows>0)
{
   echo "data return from query";
}else{

echo "data not return";
}

注意:- 不推薦使用 mysql,而是使用 mysqli 或 PDO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM