簡體   English   中英

如何使用MySQL查詢獲取行數

[英]How to use MySQL query to get the number of rows

我有這個代碼:

$london = $mysqli->query("SELECT room FROM rooms WHERE location='london' AND status='1'");
$york = $mysqli->query("SELECT room FROM rooms WHERE location='york' AND status='1'");
$total = $london + $york;

如果我 echo $total它會產生5這很好。 但是,如果我嘗試回顯$london$york ,則會出現致命錯誤。 這是為什么? 這兩個變量都應該產生查詢產生的行數。 不是嗎?

您的echo返回錯誤,因為->query()的結果不是布爾值,而是mysqli_result

是的,您可以將這些結果加在一起,但您絕對應該避免這樣做(因為它會產生意想不到的結果)。

您可能想要的是利用fetch_row()來獲取查詢結果

$result = $mysqli->query("SELECT room FROM rooms WHERE location='london' AND status='1'");
$london = $result->fetch_row();
echo $london[0]; // 2

$result = $mysqli->query("SELECT room FROM rooms WHERE location='york' AND status='1'");
$york = $result->fetch_row();
echo $york[0]; // 3

echo $london + $york; // 5

但是請注意,我強烈建議使用准備好的語句來防止SQL 注入

$country = "london";

$stmt = $mysqli->prepare("SELECT room FROM rooms WHERE location=? AND status=?");
$stmt->bind_param("si", $country, 1); 
$stmt->execute(); 
$stmt->bind_result($name, $london_rooms);

echo $london_rooms; // 2

您甚至可以通過在IN()旁邊使用逗號分隔的字符串來組合您的兩個查詢,以防止必須兩次調用您的數據庫:

$countries = ['london', 'york'];
$countriesString = implode($countries, ",");

$stmt = $mysqli->prepare("SELECT room FROM rooms WHERE location IN(?) AND status=?");
$stmt->bind_param("si", $countriesString, 1); 
$stmt->execute(); 
$stmt->bind_result($name, $rooms);

echo $rooms; // 5

暫無
暫無

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

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