PHP-rowCount()提供相同的值,无论字符串是否存在

PHP-rowCount()提供相同的值,无论字符串是否存在,php,mysql,pdo,Php,Mysql,Pdo,我有以下代码: $queryMobileNumber = $dbh->prepare("SELECT mobile_number FROM $tableBusinessOwner WHERE business_owner_id = $businessOwnerIDTable"); $queryMobileNumber->bindValue( 1, $mobileNumberNew); $queryMobileNumber->execute(); echo $businessO

我有以下代码:

$queryMobileNumber = $dbh->prepare("SELECT mobile_number FROM $tableBusinessOwner WHERE business_owner_id = $businessOwnerIDTable");
$queryMobileNumber->bindValue( 1, $mobileNumberNew);
$queryMobileNumber->execute();

echo $businessOwnerIDTable;
echo '-';
echo $queryMobileNumber->rowCount();
我使用PDO连接到我的数据库

上面检查用户插入的移动电话号码是否已存在于表中。无论当我回显
$queryMobileNumber->rowCount()时该数字是否存在该值始终为1

我不确定我错过了什么。我的错误日志中没有任何错误。

PDOStatement::rowCount()返回受相应PDOStatement对象执行的最后一个DELETE、INSERT或UPDATE语句影响的行数

如果关联的PDO语句执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并非所有数据库都能保证这种行为,便携式应用程序也不应依赖这种行为

由于您正在执行选择操作,
rowCount()
不是您要寻找的函数

你能做些什么呢

<?php

$queryMobileNumber = $dbh->prepare("SELECT mobile_number FROM $tableBusinessOwner WHERE business_owner_id = $businessOwnerIDTable");
$queryMobileNumber->execute();

$res = $queryMobileNumber->fetch(PDO::FETCH_ASSOC);

echo $businessOwnerIDTable;
echo '-';
if(!empty($res['mobile_number')){
  echo $res['mobile_number'); //or whatever else
} else {
  echo 'N/A';
}

为了获取查询数据,您必须始终获取执行的任何查询。。试试这个

$queryMobileNumber->execute();

$result = $queryMobileNumber->fetchAll();
echo $result->rowCount();


您执行的查询的行数(选择、插入、删除)将返回执行查询的次数,如本例所示:

对于大多数数据库,PDOStatement::rowCount()不返回受SELECT语句影响的行数。相反,请使用PDO::query()发出一个SELECT COUNT(*)语句,该语句的谓词与预期的SELECT语句相同,然后使用PDO语句::FETCHTCOLUMN()检索将返回的行数。然后,应用程序可以执行正确的操作


这看起来像是糟糕的设计。为什么表名是变量?您好,它位于另一个
SELECT
语句之后。。。我该怎么做呢?我想计算包含特定记录的行数。我想计数而不是输出
手机号码的值
那么。。。计数(*)<代码>从$tableBusinessOwner中选择计数(移动电话号码),其中business\u owner\u id=$businessOwnerIDTable
<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
if ($res = $conn->query($sql)) {
/* Check the number of rows that match the SELECT statement */
  if ($res->fetchColumn() > 0) {
   ...