php pdo mysql fetch返回一般错误?
尝试执行此操作时:php pdo mysql fetch返回一般错误?,php,mysql,pdo,Php,Mysql,Pdo,尝试执行此操作时: // make unread notifications $db->sqlquery("SELECT `participant_id` FROM `user_conversations_participants` WHERE `conversation_id` = ? AND `participant_id` != ?", array($_POST['conversation_id'], $_SESSION['user_id']));
// make unread notifications
$db->sqlquery("SELECT `participant_id` FROM `user_conversations_participants` WHERE `conversation_id` = ? AND `participant_id` != ?", array($_POST['conversation_id'], $_SESSION['user_id']));
while ($participants = $db->fetch())
{
$db->sqlquery("UPDATE `user_conversations_participants` SET `unread` = 1 WHERE `participant_id` = ?", array($participants['participant_id']));
}
我似乎得到了这个错误:
警告:PDOStatement::fetch()[PDOStatement.fetch]:SQLSTATE[HY000]:
一般错误
/home/gamingon/public_html/prxa.info/includes/class_mysql.php在线
68
以下是我的查询和获取函数:
// the main sql query function
public function sqlquery($sql, $objects = array())
{
global $core;
try
{
$this->STH = $this->database->prepare($sql);
foreach($objects as $k=>$p)
{
// +1 is needed as arrays start at 0 where as ? placeholders start at 1 in PDO
if(is_numeric($p))
{
$this->STH->bindValue($k+1, (int)$p, PDO::PARAM_INT);
}
else
{
$this->STH->bindValue($k+1, $p, PDO::PARAM_STR);
}
}
$this->counter++;
return $this->STH->execute();
}
catch (Exception $e)
{
$core->message($e->getMessage());
}
}
public function fetch()
{
$this->STH->setFetchMode(PDO::FETCH_ASSOC);
**return $this->STH->fetch();**
}
在循环的第一次迭代期间,覆盖
$db
实例的STH
属性。换言之:
$db->STH
是一条SELECT预处理语句fetch()
调用,这很有效李>
$db->STH
fetch()
调用,因为SELECT语句已经消失,INSERT语句已经就位重构数据库类或创建
$db
类的新实例(使用不同的变量名!),以便在循环中使用 在循环的第一次迭代中,覆盖$db
实例的STH
属性。换言之:
$db->STH
是一条SELECT预处理语句fetch()
调用,这很有效李>
$db->STH
fetch()
调用,因为SELECT语句已经消失,INSERT语句已经就位重构数据库类或创建
$db
类的新实例(使用不同的变量名!),以便在循环中使用 你能突出显示第68行吗?为什么不使用更新。。。选择
?我突出显示了68个左右两边各有星星的图标;如果您的查询需要MySQL变量,您需要在它们自己的查询中执行它们的初始化(SET…
)。。。选择?我突出显示了68个左右两边各有星星的图标;如果您的查询需要MySQL变量,您需要在它们自己的查询中执行它们的初始化(SET…
)。正是这样,我将其更改为“全部获取”,然后foreach循环它:),谢谢!我希望我能把这个答案投上10票!我在做一件同样愚蠢的事情确实是这样,所以我把它改为全部取,然后foreach循环:),谢谢!我希望我能把这个答案投上10票!我在做一件同样愚蠢的事情D