簡體   English   中英

如何使用PHP的PDO檢查數據庫查詢返回的結果

[英]How do I check db query returned results using PHP's PDO

如何在PHP中使用PDO檢查我的結果集是否為空?

$SQL = "SELECT ......... ORDER BY lightboxName ASC;";
$STH = $DBH->prepare($SQL);
$STH->bindParam(':member_id', $member_id);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);

while($row = $STH->fetch()) {
    $lightbox_name = $row['lightboxName'];
    $lightbox_id = $row['lightboxID'];
    echo '<option value="'.$lightbox_id.'">'.$lightbox_name.'</option>';
}

我過去常常這樣做:

$result = mysql_query("SELECT ...... ORDER BY lightboxName ASC;");
if(!$result) { echo 'No results found!'; }

但是剛剛開始使用PDO和准備好的語句並且對$STH檢查似乎沒有按預期工作 - 它總是有價值的!

我會嘗試使用rowCount()

$rows_found = $STH->rowCount();

但是,根據手冊:

如果關聯的PDOStatement執行的最后一個SQL語句是SELECT語句,則某些數據庫可能會返回該語句返回的行數。 但是,並不保證所有數據庫都有這種行為,不應依賴於便攜式應用程序。

如果它不適合您,您可以使用手冊中提到的其他方法。

您當然也可以在while循環之前設置變量, while循環中更改它並在循環后檢查值...

只需轉儲有關變量的信息。

var_dump($STH)

編輯

我剛才有了問題。 這有rowCount()函數。 只需使用$STH->rowCount(); 對於行計數然后比較它。

好的,這里是它確實工作的代碼,最后經過幾個小時的環顧四周,混合匹配這里的一些答案實際上會在你的select語句中返回一個計數。 SQL是select語句,顯然$ username1是用戶名文本框的帖子。 $ password1與用戶名設置相同。 除此之外,您應該擁有使其工作所需的一切,只需用您的變量代替我的變量。 我希望這可以節省一些人的時間,因為我搜索了一段時間試圖得到我想要的東西。 這個解決方案適用於你有一個select語句,你希望能夠繼續或停止它返回一些東西。

SQL = 'SELECT * from Users WHERE Username = :Username AND Password = :Password';
STH = $conn->prepare($SQL);
STH->bindParam(':Username', $username1);
STH->bindParam(':Password', $password1);
STH->execute();
STH->setFetchMode(PDO::FETCH_ASSOC);


row_count = $STH->rowCount();

暫無
暫無

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

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