【发布时间】:2014-12-29 12:38:11
【问题描述】:
关于这个有很多问题,但我仍然找不到能回答我问题的问题。
我得到了一些代码(显然),它对数据库进行查询,并且由于某种原因它返回了一个错误。
// ^ somewhere in the top session_start();
require("rw_conx.php");
try {
// Get answers from database
$db = new PDO ("mysql:host=$host;dbname=$dbname", $username, $pass);
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $db->prepare("SELECT antwoorden, commentaar
FROM antwoorden
WHERE vragenlijst = :vragenlijst
AND meting = :meting
AND behandeltraject = :behandeltraject
AND onderzoeksNR = :onderzoeksnummer");
$vragenlijst = "1";
$meting = "1";
$onderzoeksNR = trim(preg_replace('#[^0-9]#', '', $_SESSION["onderzoeksnummer"]));
$behandeltraject = trim(preg_replace('#[^0-9]#', '', $_SESSION["behandeltraject"]));
$stmt->execute(array('vragenlijst'=>$vragenlijst,'meting'=>$meting,'behandeltraject'=>$behandeltraject,'onderzoeksnummer'=>$onderzoeksNR));
// Render all questions (check if 5's should be hidden), input disabled, no answer categories.
$num_rows = $stmt->rowCount();
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT);
// What this does is create a string like: 1=2,2=4,3=5|||COMMENTS|||1=blabla,2=blabla
if ($num_rows > 0) {
echo $row[0];
echo "|||COMMENTS|||";
echo $row[1];
} else {
echo "no data";
}
} catch(PDOException $e) {
echo "I'm sorry, I'm afraid I can't do that. (1)";
file_put_contents('../debug.log', $e->getMessage(), FILE_APPEND);
exit();
}
$stmt->execute(array('vragenlijst'=>$vragenlijst,'meting'=>$meting,'behandeltraject'=>$behandeltraject,'onderzoeksnummer'=>$onderzoeksNR));
--- 编辑---
为了清楚起见,我会解释一下。
1.我在上面的问题中提到,会话没有问题。
我的意思是,发生的错误 (SQLSTATE[HY093]) 没有被抛出,因为会话是空的。
2。问题仍然存在。
即使 session_start() 修复了查询(它现在返回它应该返回的行),我仍然遇到同样的错误,这(当然)不应该发生。
我希望这能澄清一点,因为每个人都在生我的气。我确实提到了会话没有问题,并且对于发生的错误,它们没有问题。由于某种原因,即使查询成功运行,catch 函数仍然给我一个错误。
所以,如果还有人愿意帮助我,我将不胜感激。
--- 结束编辑 ---
有人看到(可能很明显的)缺陷吗?
【问题讨论】:
-
检查表中的列名并确保类型正确。
-
作为测试,您可以尝试在查询中使用
?而不是:name作为您的参数,并在execute调用中使用array($vragenlijst, $meting, ...)吗? -
哦...等一下。你提到了会议。你开始会议了吗?包括
session_start();吗?你在下面的评论中提到了一些关于var_dump($_SESSION); -
@Fred-ii- LOL 事实证明你是对的,因为我是在向页面发送请求,而不是包含它......你真是个男人!我以为我包括了页面。非常感谢:P
-
@Fred-ii- 如果你愿意,你可以,你应得的 :)