Php 使用PDO将数据插入MySQL数据库

Php 使用PDO将数据插入MySQL数据库,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我不熟悉PHP和MySQL,我正在尝试将数据插入到数据库中,在我尝试使用PDO的prepare方法之前,该方法一直运行良好。它返回catch错误,我不知道为什么-我还想知道使用命名占位符还是命名占位符是最佳做法 username和password变量在前面的代码中定义,并使用$\u POST从用户获取数据 编辑:getMessage错误显示SQLSTATE[23000]:完整性约束冲突:1048列“用户名”不能为空 您有两个不同的变量名。您正在检查$user以确保它不是空的,但是您告诉bind$

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

username和password变量在前面的代码中定义,并使用$\u POST从用户获取数据


编辑:getMessage错误显示SQLSTATE[23000]:完整性约束冲突:1048列“用户名”不能为空


您有两个不同的变量名。您正在检查$user以确保它不是空的,但是您告诉bind$username到第一个参数。您只需重命名其中一个以匹配另一个。

试试这一个

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";
}
}


请先尝试查找错误。

echo$e->getMessage;请参阅错误。SQLSTATE[23000]:完整性约束冲突:1048列“username”不能为空。您正在引用$user,然后引用$username。是哪一个?
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";
}