亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查表是否為空或者我的查詢是否與任何結果都不匹配

如何檢查表是否為空或者我的查詢是否與任何結果都不匹配

PHP
largeQ 2023-09-08 14:09:55
我想要一個僅在表中沒有行或現有行與我的輸入中的特定參數不匹配時運行的 if 語句。我嘗試了這樣的方法:$currentURL = $post["media_url"];$sql = "SELECT * FROM images WHERE imageURL = '$currentURL'";$result = $conn->query($sql);if(!$result){ ... }根據我的想法,這應該在我第一次想向數據庫添加內容并且 $currentURL 在現有數據中不存在時執行 if 語句。但這似乎并不像我想象的那樣有效。你會怎么做?也許我處理 $result 是錯誤的,因為如果我在 phpmyadmin 中測試 sql 查詢,這會顯示正確的結果(沒有行)。
查看完整描述

3 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

正確的方法是使用準備好的語句并將結果提取到數組中。您可以使用以下命令將所有行提取到數組中fetch_all()


$stmt = $conn->prepare("SELECT * FROM images WHERE imageURL = ?");

$stmt->bind_param('s', $post["media_url"]);

$stmt->execute();

// Get result and then fetch all rows from the result object

$result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);


// Then check if you have any rows at all using a simple if statement

// Negate it using ! to check if the array is empty

if (!$result) {

    // no results found

}


查看完整回答
反對 回復 2023-09-08
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

我猜,那$conn是一個 PDO 連接?在這種情況下,該方法$conn->query()返回 PDOStatement 類型的對象。請參閱https://www.php.net/manual/de/class.pdostatement.php


該方法不返回結果集。


相反,您可以使用 PDOStatement 對象來獲取結果:


$currentURL = $post["media_url"];

$sql = "SELECT * FROM images WHERE imageURL = '$currentURL'";

$result = $conn->query($sql)->fetchAll();


if(empty($result))

{ ... }

如果您使用 mysqli,返回的對象query()是這樣的: https: //www.php.net/manual/en/class.mysqli-result.php


所以代碼是:


$currentURL = $post["media_url"];

$sql = "SELECT * FROM images WHERE imageURL = '$currentURL'";

$result = $conn->query($sql)->fetch_all(MYSQLI_ASSOC);


if(empty($result))

{ ... }

另請注意:您的代碼非常不安全!您應該使用準備好的語句來防止 sql 注入:


$currentURL = $post["media_url"];

$sql = "SELECT * FROM images WHERE imageURL = :currentUrl";

$stmt = $conn->prepare($sql);

$stmt->execute(['currentUrl' => $currentURL]);

$result = $stmt->fetchAll();


if(empty($result))

{ ... }


查看完整回答
反對 回復 2023-09-08
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

  1. 清理輸入以防止 SQL 注入(或更好 - 使用準備好的語句和參數綁定)

$sql = "SELECT * FROM images WHERE imageURL = '".$conn->real_escape_string($currentURL)."'";

  1. mysqli 查詢成功時返回 true(即使空數據集也成功),請使用 num_rows 代替:

if ( $result->num_rows === 0 ) { ... }


查看完整回答
反對 回復 2023-09-08
  • 3 回答
  • 0 關注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號