使用Mysqli和PHP仅获取行数

时间:2018-11-05 10:48:21

标签: php mysqli

我想获得在特定列中发生特定次数的次数(可能为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次出现,那么我得到的输出是:

联系人客户ID 50 xxxxx 250

我在各处(包括此处)都看过手册和示例,但看不到我做错了什么。

2 个答案:

答案 0 :(得分:2)

执行此操作的方法有多种,更准确地说,您可以选择使用PHP进行计数,或者让SQL Server进行计数并仅返回数字:

  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 Server上执行此操作,因为它可以更好地处理负载;

我会说/ 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. 我们在SQL中使用COUNT()函数,这使服务器计算contact_client_ID的出现次数,然后(在结果中)创建一个名为“ total”的新变量

  2. 我们执行查询并获取结果

  3. 我们使用mysqli_fetch_rowm这个函数将结果行作为枚举数组获取

  4. 然后我们访问该数组(因为我们知道它只有1个项目,我们访问了索引0),然后打印在步骤1中生成的变量total-$ count_result [0] ['total']

答案 1 :(得分:-1)

尝试一下

/ *选择查询返回结果集* /

 if ($result = $mysqli->query("SELECT * FROM t_contacts WHERE contact_client_ID ='$contact_client_ID")) {
printf("Select returned %d rows.\n", $result->num_rows);