【发布时间】:2014-10-14 18:47:20
【问题描述】:
我正在尝试在数据库中插入用户答案(到 php 表单)。 答案被插入到表“Answer”中,该表有 4 列:(Id, userId, qId, answer) 其中 Id 是唯一 id,qId 是问题 Id(问题存储在表“question”中)。
问题: 这是我尝试将数据插入数据库的代码(insertPage1.php):
<?php
try{
$conn = new PDO('mysql:dbname=Application;host=localhost;charset=utf8mb4', 'user', 'xxxx');
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$i = 0;
foreach($_SESSION['post'] as $key => $value) {
$stmt = $conn->prepare('INSERT INTO Answer (userId, qId, answer) VALUES (userId = :username, qId = :qId, answer = :answer)');
$stmt -> execute(array(':username' => $_SESSION['SESS_USERNAME'], ':qId' => $key, ':answer' => $value));
echo "$i\n";
echo "$key\n";
echo "$value\n";
$i++;
}
}
catch(PDOException $e) {
echo 'Exception -> ';
var_dump($e->getMessage());
}
?>
这是 page2.php 中的代码,我在其中检查 page1 中发布的答案:
foreach ($_POST as $key => $value) {
if (is_array($_POST[$key])){
$_SESSION['post'][$key] = implode("\n", $_POST[$key]);
}
else{
$_SESSION['post'][$key] = $value;
}
}
extract($_SESSION['post']); // Function to extract array.*/
include('insertPage1.php');
?>
<html>
//html for the second page...
</html>
结果如下:|
但关键是,正如在第一个代码“insertPage1.php”中看到的那样,我添加了 3 行(回显)来打印 $i、$key 和 $value 的值......虽然,我看到了$value 在日志中正确显示(即显示 q1、q2、...),我不知道为什么它们在表中显示为“0”?!!!
任何想法都将受到高度赞赏,
【问题讨论】:
-
你为什么要做`VALUES (userId = :username, qId = :qId, answer = :answer)` 而不仅仅是`VALUES (:username, :qId, :answer)`?跨度>