【问题标题】:PDO Invalid Parameter [duplicate]PDO 无效参数 [重复]
【发布时间】: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 不知道错误来自哪里,它怎么可能是重复的?

标签: php pdo


【解决方案1】:

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

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

不客气! :-)

【讨论】:

  • 列名需要用刻度线` 包裹起来——但没有破折号可以完全解决列名的问题。
猜你喜欢
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-06-04
  • 2016-08-27
  • 2018-12-01
  • 2012-07-09
  • 1970-01-01
相关资源
最近更新 更多