【发布时间】:2013-05-11 14:34:39
【问题描述】:
xampp 安装中的 PHP 5.4.7,MySQL 5.5.27 - 我整天都在努力让各种 UPDATE 语句正常工作,但无济于事。阅读并尝试了来自http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers 的示例,并放弃了一次更新(找到了替代解决方案),但我想知道下面的这个有什么问题。顺便说一句,我所有其他 PDO FETCHALL 查询都可以正常工作...
function updateThisMemberInterests($PDOdbObject, $memberId, $interests)
{
try
{
$intId = 0;
$upInt = $connectionObject->prepare("UPDATE `member_interest` SET (`interest_id`) VALUES (:intId)");
$upInt->bindParam(':intId', $intId, PDO::PARAM_INT);
foreach($interests as $intId)
{
$upInt->execute();
}
$affected_rows = $upInt->rowCount();
return $affected_rows;
}
catch (PDOException $e)
{
echo "There was a problem connecting to this database.";
$e->getMessage();
}
}
我的数据库设置函数指定: PDO::ATTR_EMULATE_PREPARES => 假, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
但除了我在 Catch 中回显的消息外,我什么也没得到。
一定是错误地解释了教程的说明 - 谁能告诉我它是什么?
【问题讨论】:
-
我很确定
rowCount()仅适用于最近的execute(),因此在循环之后调用它不会为您提供正确的信息。 -
无论如何,你的问题是你的函数接受
$PDOdbObject,但你在函数体中调用$connectionObject。打开error_reporting和display_errors,你会看到在非对象上调用成员函数prepare()。 -
关于 rowCount() - 注意,谢谢。关于 $PDOdbObject,这是它在我的数据层文件中的名称。在我多次尝试弄清楚发生了什么时,我将整个函数移到了调用文件中——所以我的错误是,我用 caling var 名称发布了这个函数。实际上,它们都是数据层文件中的 $PDOdbObject。所以不是那样...
-
您还需要回显异常消息,现在您只是丢弃它的输出。这应该告诉你一些有用的东西......
echo $e->getMessge(); -
Michael - 感谢您提供错误报告信息!呃!有一个新的 IDE,它还没有正确设置。这使得发现问题变得更加容易:D。
标签: pdo transactions