使用Mysqli和PHP只获取行数



我想知道一个特定数字在特定列中出现了多少次(可能是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

我看了各地的手册和例子(包括这里(,看不出我做错了什么。

有多种方法可以做到这一点,更准确地说,您可以选择在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. 我们在SQL中使用COUNT((函数,这使服务器计算contact_client_ID的出现次数,然后(在结果中(生成一个名为"total"的新变量

  2. 我们执行查询并得到结果

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

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

试试这个

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

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

最新更新