【问题标题】:PDO prepare insert valuesPDO 准备插入值
【发布时间】:2016-11-29 08:51:19
【问题描述】:

我尝试使用 PDO 和自定义准备请求将表单 (createBuilder) 中的数据插入到我的数据库中:

public function createUser($data)
{
    $connect = $this->connectBDD();

    $rq = " INSERT INTO user (email, password, firstname, lastname, salt, role, addf, addl)
            VALUES (:email, :password, :firstname, :lastname, :salt, :role, NULL, NULL)";

    $t  = $connect->prepare($rq);
    $t->execute([
        ':email'     => $data["email"],
        ':password'  => $data["plainPassword"],
        ':firstname' => $data["firstname"],
        ':lastname'  => $data["lastname"],
        ':salt'      => $data["salt"],
        ':role'      => 'ROLE_USER'
    ]);

    return true;
}

但我收到以下错误:

SQLSTATE[42601]: 语法错误: 7 ERREUR: erreur de syntaxe sur ou près de « user » LINE 1: INSERT INTO user (email, password, firstname, lastname, sal... ^

这是因为最后两个“NULL”值吗?我不这么认为,因为如果我在数组中再添加 2 个变量,我仍然会收到错误...

感谢您的帮助

【问题讨论】:

  • 占位符是没有' 的值。请参阅 PDO 手册。你看到' 中包含任何占位符吗?
  • 但是没有 ' 像 VALUES (:email, :password, :firstname, :lastname, :salt, :role, NULL, NULL),我得到一个“SQLSTATE[42601]:语法错误: 7 ERREUR: erreur de syntaxe sur ou près de « user »"
  • 这是什么意思?用错误和代码更新问题。
  • 这类问题不应该有标准答案吗?

标签: php sql pdo


【解决方案1】:

':email' 是一个字符串,其中包含字符 :em 等...:email(没有')是一个占位符。

永远不应引用占位符 - 引用它们会变成非占位符。

$sql = "... VALUES(:email, :password, :firstname,  etc...";

【讨论】:

  • 引用@Marc 可以,但没有我仍然有错误。我已经更新了问题
  • 不是保留字)关键字是,但不是保留字。
  • 啊,是的。我一直错过那里的[R]...'当然,OP 没有指定他们使用的是 mysql,所以谁知道。也许是保留用户的其他数据库。
  • 我将表名更新为“users”,现在我得到了一个 SQLSTATE[42P01]: Undefined table "users"...
猜你喜欢
  • 2013-02-25
  • 1970-01-01
  • 2015-03-13
  • 2017-09-19
  • 2013-11-09
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多