[英]How to debug what PHP PDO prepared statement does not insert data
我有
$salt = md5(mt_rand());
$hashed = hash_hmac('SHA256', $password, $salt);
$stmt = self::$_dbh->prepare('INSERT INTO users (username, password, salt, display, email) VALUES (:username, :password, :salt, :display, :email)');
$stmt->bindParam('username', $username);
$stmt->bindParam('password', $hashed);
$stmt->bindParam('salt', $salt);
$stmt->bindParam('display', $display);
$stmt->bindParam('email', $email);
$stmt->execute();
$firephp->log('Insert OK ');
if ($stmt->rowCount() > 0) {
return array(
'status' => 'OK',
'message' => 'Registration Successful'
);
}
$firephp->log('Unknown ... Row count: ' . $stmt->rowCount());
return array(
'status' => 'failed',
'message' => 'Something went wrong with the registration ... Please try again ...'
);
我总是收到“注册出现问题...请重试...”。 看起来rowCount
是 0。确实,它没有插入数据库。 这是为什么?
尝试:
$firephp->log(
$stmt->debugDumpParams()
. "\n"
. var_export($stmt->errorInfo());
当有人在主 id 字段上关闭/关闭数据库自动增量时,可能会出现类似的问题。 检查数据库并确保其设置正确。
尝试将冒号放在 bindParam 占位符中,例如代替
$stmt->bindParam('username', $username);
做
$stmt->bindParam(':username', $username);
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.