0

この非表示のフォームを使用して 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の使用に比較的慣れていないので、助けていただければ幸いです。

4

2 に答える 2

1

executeそのような方法で使用する場合bindParam(およびその逆)は、使用する必要はありません。配列をkey=>valueとして渡し、keysをクエリで使用されるシンボルとして渡す必要があります(「シンボル」はRubyの用語から借用されています)。

于 2012-05-02T13:42:07.177 に答える
0

メソッドでパラメーターを渡し、executeそれらをステートメントにバインドしていbindParamます-どちらか一方を実行するだけです!

于 2012-05-02T13:53:26.673 に答える