【发布时间】:2014-10-01 17:35:18
【问题描述】:
昨天我将基于 mysqli 的代码更改为 PDO。所以我对 PDO 语句很陌生。我在获取匹配的 MySQL 数据数量时遇到问题。
我已经搜索了如何获取受影响的行数。我遇到了3种方法:
在 SQL 语句中使用 COUNT(*)
SELECT COUNT(*) FROM blah WHERE blah = :blah使用 fetchAll() 然后计数
$var = $db->fetchAll(); count($var);最后一个 rowCount()。
根据php手册
PDOStatement::rowCount() 返回受相应 PDOStatement 对象执行的最后一个 DELETE、INSERT 或 UPDATE 语句影响的行数。
所以我没有尝试 rowCount()。我尝试了前两个选项。但是他们没有工作。我不知道我的代码有什么问题。
这是我的代码 我用于用户名(或电子邮件)是否已注册。
$sql = "SELECT * FROM WHERE uye_ka = :kullanici_adi";
$ka_varmi = $db_uye->prepare($sql);
$ka_varmi->bindParam(':kullanici_adi',$kullanici_adi,PDO::PARAM_STR,255);
$ka_varmi->execute();
$ka_sonuc = $ka_varmi->fetchAll();
if (count($ka_sonuc)) {
$form_hata = true;
$ka_ayni = true;
$kayit_msg[] = "Seçtiğin kullanıcı adı başka bir kullanıcı tarafından daha önceden alınmış Başka bir tane dene";
}
$sql2 = "SELECT * FROM WHERE uye_e_posta = :e_posta";
$e_varmi = $db_uye->prepare($sql2);
$e_varmi->bindParam(':e_posta',$kullanici_adi,PDO::PARAM_STR,255);
$e_varmi->execute();
$e_sonuc = $e_varmi->fetchAll();
if (count($e_sonuc)) {
$form_hata = true;
$e_ayni = true;
$kayit_msg[] = "Girdiğin e-posta adresi daha önceden kullanılmış. Şifreni mi unuttun ? ";
}
我的代码有什么问题?
【问题讨论】:
-
在执行后尝试
print_r($ka_sonuc);,首先看看你的结果集是什么样子的 -
即使您的错误是从查询中省略了表名,我还是要支持您,因为您是极少数能够将所有内容提取到数组中并对其进行计数的人之一。 +1,保持明智的发展方式。