PDO 无效参数 [重复]

Posted

技术标签:

【中文标题】PDO 无效参数 [重复]【英文标题】:PDO Invalid Parameter [duplicate] 【发布时间】:2015-01-27 21:09:17 【问题描述】:

在开始之前,我知道还有其他类似的问题,但我无法从其中任何一个中得出解决方案。我的代码运行良好,直到我意外删除它,然后不得不重新制作它。

$sql    = "INSERT INTO inquiries (name, email, phone, date, message, event-type, guests, event-budget) VALUES (:name, :email, :phone, :date, :message, :event-type, :guests, :event-budget)";
$stmt   = $pdo->prepare($sql);
$result = $stmt->execute(array( ':name' => $_POST['name'],
                                ':email' => $_POST['email'],
                                ':phone' => $_POST['phone'],
                                ':date' => $_POST['date'],
                                ':message' => $_POST['message'],
                                ':event-type' => $_POST['event-type'],
                                ':guests' => $_POST['guests'],
                                ':event-budget' => $_POST['event-budget']
                               ));
if($result) 
    $tpl->define("alert", "<div class='col-md-12'><div class='alert-success' style='margin-left: 0; margin-bottom: 20px;'><h3><img src='http://criesvals-mbp.home:5757/_zip/_templates/_front/Refresh/multi-page/assets/images/head_img1.png' alt='' class='pull-left small_design_left'>Your Appointment Has Been Submitted<img src='http://criesvals-mbp.home:5757/_zip/_templates/_front/Refresh/multi-page/assets/images/head_img1.png' alt='' class='pull-right small_design_right'></h3></div></div>");
    $tpl->define('hide', 'style="display: none;"');
 else 
    $tpl->define("alert", "<div class='col-md-12'><div class='alert-failure' style='margin-left: 0; margin-bottom: 20px;'><h3><img src='http://criesvals-mbp.home:5757/_zip/_templates/_front/Refresh/multi-page/assets/images/head_img1.png' alt='' class='pull-left small_design_left'>There was an error submitting your appointment. Please try again later.</h3><img src='http://criesvals-mbp.home:5757/_zip/_templates/_front/Refresh/multi-page/assets/images/head_img1.png' alt='' class='pull-right small_design_right'></div>");
    $tpl->define('hide', 'style="display: none;"');

【问题讨论】:

在绑定前检查是否所有的POST都设置好了 @Mihai 我只是仔细检查了一遍,它们确实都设置好了。我也有 if 语句检查它们是否是“isset”和“!empty”。 尝试将带有破折号的参数名称 :event-type 更改为无破折号的名称 :eventType 等... message, "event-type", guests, 等...用破折号命名列只是一个坏习惯...也许对您来说更容易,对将来重命名列会更好... @Mihai 我同意它肯定是相关的,但是如果 OP 不知道错误来自哪里,它怎么可能是重复的? 【参考方案1】:

尝试将带有破折号的参数名称 :event-type 更改为无破折号的名称 :eventType 等...

可能还有message, "event-type", guests, ...

不客气! :-)

【讨论】:

列名需要用刻度线` 包裹起来——但没有破折号可以完全解决列名的问题。

以上是关于PDO 无效参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pdo - 将值插入数据库错误 SQLSTATE [HY093] [重复]

PDO:显示表键无法正确绑定参数[重复]

参数化 PDO 查询和“LIMIT”子句 - 不起作用 [重复]

MySQL PDO如何为IN()[重复]绑定参数

无效路径参数/查询参数的错误代码应该是啥[重复]

未处理的异常:将无效参数传递给认为无效参数致命的函数。在插入排序中[重复]