无法使用PDO获取受影响的行数


Can't get number of affected rows with PDO

昨天我把基于mysql的代码改为PDO。所以我对PDO语句很陌生。我有问题获得匹配的MySQL数据的数量。

我已经搜索了如何获得受影响的行数。我遇到了3种方法:

  1. 在SQL语句SELECT COUNT(*) FROM blah WHERE blah = :blah

  2. 中使用COUNT(*)
  3. 使用fetchAll()然后计数$var = $db->fetchAll(); count($var)

  4. 最后一个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 ? ";
}

我的代码有什么问题?

SELECT * FROM WHERE uye_ka = :kullanici_adi

Select from Where actually?您需要指定一个表名

SELECT * FROM  myTable WHERE uye_ka = :kullanici_adi
               ^

第二个查询也是一样