【问题标题】:Error PDO insert: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens错误 PDO 插入:SQLSTATE [HY093]:无效的参数号:绑定变量的数量与标记的数量不匹配
【发布时间】:2014-03-15 05:54:09
【问题描述】:

我正在尝试使用 PDO id_facebook (mysql bigint)、name(mysql varchar) 和 email(mysql varchar) 进行插入,但无法解决此错误,PDO 语法看起来正确,可以是什么?

public static function inserirUsuarioFacebook($id_facebook, $nome, $email)
{
    try
    {
        $pdo = Conexao::getInstance();

        $consulta = $pdo->prepare("INSERTO INTO usuario_facebook (id_facebook, nome, email) VALUES (:id_facebook, ':nome', ':email')");
        $consulta->bindParam(':id_facebook', $id_facebook, PDO::PARAM_INT);
        $consulta->bindParam(':nome', $nome, PDO::PARAM_STR);
        $consulta->bindParam(':email', $email, PDO::PARAM_STR);
        $consulta->execute();   
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}

【问题讨论】:

  • ops,我没看过,谢谢

标签: php mysql pdo insert


【解决方案1】:

您不引用占位符。这会将它们变成字符串,而不是占位符:

... VALUES(:id_facebook, :nome, :email)
                         ^----^-^-----^--- note the lack of quotes

就是这样

占位符的全部意义在于消除任何引用/转义的需要。数据库引擎会为您处理所有这些。

【讨论】:

    猜你喜欢
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多