【问题标题】:Inserting data into MySQL database using PDO使用 PDO 将数据插入 MySQL 数据库
【发布时间】:2014-04-17 14:42:12
【问题描述】:

我是 PHP 和 MySQL 的新手,我正在尝试将数据插入到数据库中,在我尝试使用 PDO 的准备方法之前,它一直运行良好。它返回 catch 错误,我不知道为什么 - 我还想知道使用未命名占位符还是命名占位符是最佳做法?

用户名和密码变量在我的代码前面定义,并使用$_POST从用户那里获取数据。

编辑:getMessage() 错误显示SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null

if (!empty($user) && (!empty($password)) ) {
    try {
        $results = $db->prepare("INSERT INTO user_info (username, pass) VALUES (?,?)");
        $results->bindParam(1,$username);
        $results->bindParam(2,$password);
        $results->execute();
    } catch (Exception $e) {
        echo "Could not insert data in to the database";
    }
}

【问题讨论】:

  • echo $e->getMessage(); 看看是什么错误。
  • SQLSTATE[23000]:违反完整性约束:1048 列“用户名”不能为空
  • 您引用了$user,然后又引用了$username。是哪个?

标签: php mysql database pdo


【解决方案1】:

你有两个不同的变量名。您正在检查$user 以确保它不是empty(),然后您告诉绑定$username 到第一个参数。您只需要重命名其中一个以匹配另一个。

【讨论】:

    【解决方案2】:

    试试这个。

    if (!empty($user) && (!empty($password)) ) {
    try {
        $results = $db->prepare("INSERT INTO user_info (username, pass) VALUES (?,?)");
        $results->bindParam(1,$user);
        $results->bindParam(2,$password);
        $results->execute();
    } catch (Exception $e) {
        echo "Could not insert data in to the database";
    }
    

    }

    请先尝试自己找出错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2017-07-03
      • 2013-11-17
      相关资源
      最近更新 更多