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) {
...