Получение только количества строк с использованием Mysqli и PHP - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу узнать, сколько (возможно, 0) раз конкретное число встречается в определенном столбце. Я устанавливаю число в $ contact_client_ID, а затем выполняю запрос SELECT ниже.

$sql = "SELECT * FROM t_contacts WHERE contact_client_ID ='$contact_client_ID'";
$result=(mysqli_query($link, $sql));
$count_result= mysqli_num_rows($result);

echo "contact client ID $contact_client_ID xxxxx $count_result";

Вместо $ count_result, содержащего нужное мне число, он содержит результат, составленный из нужного мне числа, и contact_client_ID, объединенный вместе, и результат не представляется пригодным для использования в качестве числа в любом следующем коде.

Итак, если $ contact_client_ID = 50 и в таблице есть 2 вхождения, я получаю вывод:

идентификатор клиента 50 xxxxx 250

Я посмотрел руководства и примеры повсюду (в том числе здесь) и не вижу, что я делаю неправильно.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Есть несколько способов сделать это, точнее, у вас есть возможность либо подсчитать в PHP, либо заставить ваш SQL-сервер подсчитать и просто вернуть число:

  1. Сделайте это в PHP:

Требуется: - получить все данные; -сделать переменную счетчика; - цикл через данные, для каждого счетчика увеличения цикла + 1

Для небольших таблиц вы можете использовать PHP, для больших таблиц я советую делать это на SQL, поскольку для подсчета PHP он должен получить все данные.

$counter=0;
$query = "SELECT * FROM t_contacts WHERE contact_client_ID ='$contact_client_ID";
$res = $con->query($query);
while ($row = $res->fetch_assoc()) {
$counter++;
}
  1. Сделайте это в SQL

Теперь разумнее было бы сделать это на сервере SQL, так как это лучше справилось бы с нагрузкой;

Я бы сказал, что то, что написал / u / Adaleni, очень близко к тому, что я использовал бы:

$sql = "SELECT count(contact_client_ID) as total FROM t_contacts WHERE contact_client_ID ='$contact_client_ID'";
$result=mysqli_query($link, $sql);
$count_result= mysqli_fetch_row(result);
echo "contact client ID $contact_client_ID xxxxx $count_result[0]['total']";

Давайте просто опишем, что он делает:

  1. мы используем функцию COUNT () в SQL, это заставляет сервер подсчитывать количество вхождений contact_client_ID, а затем создает (в результате) новую переменную с именем "total"

  2. мы выполняем запрос и получаем результат

  3. Мы используем mysqli_fetch_rowm, эта функция получает строку результата в виде перечисляемого массива

  4. затем мы получаем доступ к этому массиву (поскольку мы знаем только его 1 элемент, мы обращаемся к индексу 0) и печатаем итоговую переменную, которую мы сделали на шаге 1 - $ count_result [0] ['total']

0 голосов
/ 05 ноября 2018

Попробуйте это

/ * Выборочные запросы возвращают набор результатов * /

 if ($result = $mysqli->query("SELECT * FROM t_contacts WHERE contact_client_ID ='$contact_client_ID")) {
printf("Select returned %d rows.\n", $result->num_rows);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...