致命错误:未捕获的PDOException:SQLSTATE [HY000]:“位置”堆栈跟踪中的一般错误:#0

时间:2018-12-26 19:42:13

标签: php html mysql registration

对您提出的一些显而易见的问题感到抱歉。我收到一个致命错误,但似乎没有什么问题,因为一切似乎都在工作。 (用户已注册)

我目前正在学习PHP,并且正在通过编辑现有代码来学习它。所以从一开始这不是我的代码。无论如何,该代码上周运行良好。我没有实际编辑它的记忆。现在,当我对其进行测试时,它给了我一个致命错误(标题中的错误)。它抱怨代码“ register.php(50):PDOStatement-> fetchAll()#1”

代码是:

<?php


include('database_connection.php');

if(isset($_SESSION['user_id']))
{
 header("location:index.php");
}

$message = '';

if(isset($_POST["register"]))
{
 $query = "
 SELECT * FROM users 
 WHERE user_email = :user_email
 ";
 $statement = $connect->prepare($query);
 $statement->execute(
  array(
   ':user_email' => $_POST['user_email']
  )
 );
 $no_of_row = $statement->rowCount();
 if($no_of_row > 0)
 {
  $message = '<label class="text-danger">Email Already Exits</label>';
 }
 else
 {
  $user_password = rand(100000,999999);
  $user_encrypted_password = password_hash($user_password, PASSWORD_DEFAULT);
  $user_activation_code = md5(rand());
  $insert_query = "
  INSERT INTO users
  (user_name, user_email, user_password, user_activation_code, user_email_status) 
  VALUES (:user_name, :user_email, :user_password, :user_activation_code, :user_email_status)
  ";
  $statement = $connect->prepare($insert_query);
  $statement->execute(
   array(
    ':user_name'   => $_POST['user_name'],
    ':user_email'   => $_POST['user_email'],
    ':user_password'  => $user_encrypted_password,
    ':user_activation_code' => $user_activation_code,
    ':user_email_status' => 'not verified'
   )
  );
  $result = $statement->fetchAll();
  if(isset($result))
  {

我正在尝试查看问题,但没有。如果有人可以找到问题,我将不胜感激。if isset代码之后,只有一个phpmailer函数。

我知道我不好,但我正在尝试学习,想知道我在哪里搞砸了。谢谢

1 个答案:

答案 0 :(得分:0)

如果插入成功,

execute()返回true。因此,您不必获取结果,而是这样做:

$dbSuccess = $statement->execute(
...
);
if ($dbSuccess === true) {
...

您还可以使用$statement->errorCode()来检查INSERT是否成功。