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

时间:2014-08-08 09:25:09

标签: php mysql pdo

昨天我将基于mysqli的代码更改为PDO。所以我对PDO语句很新。我在获取匹配的MySQL数据的数量方面遇到了问题。

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

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

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

  4. 最后一个rowCount()。

  5. 根据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 ? ";
    }
    

    我的代码出了什么问题?

1 个答案:

答案 0 :(得分:3)

SELECT * FROM WHERE uye_ka = :kullanici_adi

从哪里选择?您需要指定一个表名

SELECT * FROM  myTable WHERE uye_ka = :kullanici_adi
               ^

第二次查询相同。