Как использовать MySQL запрос, чтобы получить количество строк - PullRequest
0 голосов
/ 27 июня 2019

У меня есть этот код:

$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;

, если я повторяю $total, это выдает 5, что хорошо. Однако, если я попытаюсь повторить $london или $york, я получу фатальную ошибку. Это почему? Обе переменные должны давать количество строк, полученных в результате запроса. Не так ли?

Спасибо.

1 Ответ

0 голосов
/ 27 июня 2019

Ваш 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...