【发布时间】:2026-01-17 09:10:01
【问题描述】:
我正在尝试 insert 或 update 记录,具体取决于用户 ID 是否存在。
我发现了两篇使用 PDO 的帖子,但似乎无法让它与我的代码一起使用。
如您所见,我正在使用 $stmt->rowCount() == 0 的 if else 语句。
也试过了:
a: userID == 0
b: userID == 1 with update in the if.
它将插入但不会更新的问题,反之亦然,具体取决于我的编写方式。
使用$stmt->rowCount() == 0,我得到一个致命错误:
在非对象上调用成员函数 rowCount()。
我是初学者,所以我可能做错了。
try {
if($stmt->rowCount() == 0) {
$stmt = $db->prepare('INSERT INTO books (colOne,colTwo,userID,creationDate) VALUES (:colOne, :colTwo, :userID, now())');
$stmt->execute(array(
':colOne' => $_POST['colOne'],
':colTwo' => $_POST['colTwo'],
':userID' => $_POST['userID']
));
} else {
$stmt = $db->prepare('UPDATE books SET colOne = :colOne, colTwo = :colTwo, userID = :userID, modifiedDate = NOW() WHERE userID = :userID');
$stmt->execute(array(':colOne'=>$colOne, ':colTwo'=>$colTwo, ':userID'=>$userID));
}
} catch (PDOException $e) {
echo 'PDO Exception: ' . $e->getMessage();
exit();
}
【问题讨论】:
-
你认为我们可以想象
stmt准备的查询吧? -
感谢发布代码的人,我使用 ON DUPLICATE KEY UPDATE 使其工作,但它已被 Your Stupid Sense 删除,这使我无法给予该人信用。它不仅仅是 ON DUPLICATE KEY UPDATE 这使得它不是重复的,但你愚蠢的感觉再次没有任何意义。无论如何,感谢那家伙写了所有的代码并发布了它。如果您想重新发布代码,我很乐意为您提供信用。我会回来看看。如果我回来查看代码时返回了代码,我将解释使它工作的额外步骤。