【问题标题】:php xml PDO insert query errorphp xml PDO插入查询错误
【发布时间】:2012-05-02 13:01:19
【问题描述】:

嘿,我正在尝试使用此隐藏表单传递 xml 值:

<form method='post' action='addholiday.php'  id='addHoliday'>
<input type='hidden' name='title' id='title' value= '.$holiday->title'>
<input type='hidden' name='link' id='link' value= '.$holiday->link'>
<input type='hidden' name='date' id='date' value= '.$holiday->pudDate'>
<input type='hidden' name='description' id='description' value= '.$holiday->description'>
    <input type='submit' name='submit' value='Add Holiday'>";

并使用 PDO 进程将值插入到 mysql 数据库中:

 $db = getConnection();

//get holiday infor from hidden form
$user = $_SESSION['user'];
$title = $_POST['title'];
$link = $_POST['link'];
$date = $_POST['date'];
$description = $_POST['description'];

//insert the values in to favorties table
 $sql = "INSERT INTO saved_holidays (subscriberID, link, pubDate, title, description,dateSaved) 
VALUES (:subscriberID, :link, :pubDate, :title, :description, now())";

$stmt = $db->prepare($sql);
$stmt ->bindParam(':subscriberID', $user);
$stmt ->bindParam(':link', $link);
$stmt ->bindParam(':pubDate',$date);
$stmt ->bindParam(':title', $title);
$stmt ->bindParam(':description', $description);

$stmt->execute(array($user, $link, $date, $title, $description ));

但是,当我尝试使用表单时,我不断收到此错误消息

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: 
Invalid parameter number: parameter was not defined' in     var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w11023553/public_html/holiday/addholiday    .php:39 Stack trace: #0
/var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w11023553/public_html/holiday/addholiday.php(39):PDOStatement->execute(Array) #1 {main} thrown in /var/www/vhosts/numyspace.co
.uk/web_users/home/~unn_w11023553/public_html/holiday/addholiday.php on line 39

我对使用 PDO 比较陌生,因此我们将不胜感激,谢谢

【问题讨论】:

  • 尝试删除$stmt-&gt;bindParam之间的空格。
  • 我还没有尝试过 PDO,但你不应该 bindParam() 在 execute() 中使用数组传递值吗?

标签: php forms pdo


【解决方案1】:

如果您打算以这种方式使用bindParam,则不需要使用execute(反之亦然)。您确实需要将数组作为键 => 值传递,并将键作为查询中使用的符号(“符号”是从 Ruby 术语中借用的)。

【讨论】:

    【解决方案2】:

    您在execute 方法中传递参数并使用bindParam 将它们绑定到语句 - 您只需要做一个或另一个!

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2018-11-28
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      相关资源
      最近更新 更多