Php PDO不会插入MYSQL DB无效的参数号:未定义参数

Php PDO不会插入MYSQL DB无效的参数号:未定义参数,php,mysql,pdo,Php,Mysql,Pdo,警告:PDOStatement::execute()[PDOStatement.execute]: SQLSTATE[HY093]:参数编号无效:未定义参数 您的语句假定type为保留字而不是列名,因此它给出了10列和11个参数 尝试在列名的前面和结尾设置“char”您的查询包含多个需要倒勾引号的对象名,至少包括以下内容: 名字 姓氏 类型 编辑:顺便说一句,刚刚尝试了您的代码,prepare()失败: PHP致命错误:未捕获异常“PDOException”和消息 'SQLSTATE[420

警告:PDOStatement::execute()[PDOStatement.execute]: SQLSTATE[HY093]:参数编号无效:未定义参数


您的语句假定
type
为保留字而不是列名,因此它给出了10列和11个参数


尝试在列名的前面和结尾设置“char”

您的查询包含多个需要倒勾引号的对象名,至少包括以下内容:

  • 名字
  • 姓氏
  • 类型
编辑:顺便说一句,刚刚尝试了您的代码,
prepare()
失败:

PHP致命错误:未捕获异常“PDOException”和消息 'SQLSTATE[42000]:语法错误或访问冲突:1064您有 SQL语法错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在附近使用正确的语法 “-姓名、姓氏、公司、电子邮件、电话、城市、州、邮编、国家、类型、来源)

当使用一个库而不是那个不方便且有限的PDO时,所有的代码都只需要几行。更不用说它从来不会因为像《被遗忘的格言》这样愚蠢的原因而失败

$allowed = explode(',','first-name,last-name,Company,email,phone,city,state,zip,country,type');
$data = $db->filterArray($_POST,$allowed);
$db->query("INSERT INTO Contact SET ?u", $data);

您是否检查并确保来自
$\u POST
的每个变量都已定义?还有一个过于本地化的问题不是真正的问题。没人在乎。这是一个真正的问题,很明显我遇到了一个问题,并且正在寻找解决方案,因此需要问一个问题。此外,多亏了阿尔瓦罗·G·维卡里奥,我的代码现在运行正常。问这个问题有助于找到一个有用的解决方案。你纠正了导致问题的连字符,我删除了它们,一切都很好。
$allowed = explode(',','first-name,last-name,Company,email,phone,city,state,zip,country,type');
$data = $db->filterArray($_POST,$allowed);
$db->query("INSERT INTO Contact SET ?u", $data);