在表中执行INSERT时出现错误HY093

时间:2019-02-07 10:49:08

标签: php mysql forms pdo

SQL table 这是我要插入的表。

当我尝试使用pdo插入时,出现以下错误:

  

数组([0] => HY093 [1] => [2] =>)

所有信息均来自html表单。

db的连接正在工作,因为在执行此插入操作之前,我先进行了提取,所以这不是问题。

我已经用echo检查了所有变量,它们是正确的。

还尝试将列'id'添加到 sql 中,并为其赋予值NULL,但错误与以上相同。 但是由于列'id是自动递增的,所以我没有将其放在sql中。请参阅上面的代码以了解我的工作。

$nome = $_POST['name'];
$mail = $_POST['email'];
$psw = $_POST['pass'];
$ni = $_POST['nif']; 

这两个变量来自访存,并且有效。它们仅在这里,因为属于Insert语句。

$roleid = $row['id'];
$rolen = $row['nome'];    

$sql = "INSERT INTO users ( nome, email, psw, nif, role_id, role_name)
VALUES ( :nome, :mail, :psw, :ni, :roleid, :rolen)";


$stmt = $db1->prepare($sql);
$stmt->bindValue('nome', $nome, PDO::PARAM_STR);
$stmt->bindValue('email', $mail, PDO::PARAM_STR);
$stmt->bindValue('psw', $psw, PDO::PARAM_STR);
$stmt->bindValue('nif', $ni, PDO::PARAM_INT);
$stmt->bindValue('role_id', $roleid, PDO::PARAM_INT);
$stmt->bindValue('role_name', $rolen, PDO::PARAM_STR);
$stmt->execute();

$error = $stmt->errorInfo();
print_r($error);

执行此插入时,出现以下错误:

  

数组([0] => HY093 [1] => [2] =>)

1 个答案:

答案 0 :(得分:0)

这是问题的解决方案,我在bindValue()函数中没有使用相同的名称

$name = $_POST['name'];
$email = $_POST['email'];
$psw = $_POST['psw'];
$nif = $_POST['nif'];
$roleid = $row['id'];
$rolen = $row['nome'];

$sql = "INSERT INTO users ( nome, email, psw, nif, role_id, role_name)
        VALUES ( :name, :email, :psw, :nif, :roleid, :rolen)";

$stmt = $db1->prepare($sql);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindValue(':email', $email, PDO::PARAM_STR);
$stmt->bindValue(':psw', $psw, PDO::PARAM_STR);
$stmt->bindValue(':nif', $nif, PDO::PARAM_INT);
$stmt->bindValue(':roleid', $roleid, PDO::PARAM_INT);
$stmt->bindValue(':rolen', $rolen, PDO::PARAM_STR);
$stmt->execute();