rowCount返回0,即使它不应该返回0

时间:2013-02-27 13:30:26

标签: php mysql pdo

$this->db->beginTransaction();
$this->db->query ('LOCK TABLES users WRITE');
$sql = 'INSERT INTO users (uname) VALUES (:uname)';
$sth = $this->db->prepare ($sql);
$sth->bindParam (':uname', $uname);
$sth->execute ();
if ($sth->rowCount()==0) {
  $this->db->rollBack();
  $this->db->query ('UNLOCK TABLES');
  throw new Exception('<strong>Oh snap!</strong> User name is taken! Try again.');
}

我手动在我的数据库中设置了一个名为“test”的用户。当我创建一个名为“test2”的用户时,它起作用了。但每当我尝试创建第三个用户时,我都会rowCount = 0

数据库中的unamevarchar(15)

if(isset($_POST['regUser']) && isset($_POST['regPwd']) && isset($_POST['regConfirmPwd'])) {  
    if($_POST['regPwd'] == $_POST['regConfirmPwd'] ) {  
        $user->newUser($_POST['regUser'], $_POST['regPwd']);

} else {  
    $user->error = "<strong>Oh snap!</strong> The passwords don't match!";
  }  
}  

将帖子信息发送到我的newuser函数,然后停在代码的第一位代码上。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不是插入用户然后回滚,如果考虑该用户是否可用(锁定表之后),然后放心地进行插入,可能会更好。