- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
回答后编辑:我认为这是我自己代码中的错误——我不知道它是什么,但我着手修复它。请参阅下面的答案。
我正在使用 MySQL/PHP 执行一系列 INSERT ... ON DUPLICATE KEY UPDATE 语句。我读过的文档表明此行数将返回:
-1 : an error
0 : update, no changes to row made (i.e. all values duplicated)
1 : row inserted
2 : update performed on row with duplicate key
但是,在我应该看到 2 的地方我只看到了 0 的结果(因为我正在观察代码更新各种数据库值。)这是代码:
$stmt = $db->prepare('INSERT INTO sometable (`id`, `name`, `email`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `name` = ?, `email` = ? ;');
$stmt->execute( array ( $id, $name, $email, $name, $email ) );
$rc = $stmt->rowCount();
echo $rc;
$rc 总是出现 0 表示更新(即使值已明确更改)或 1(如预期的那样成功插入。)
我错过了什么? :)
最佳答案
尝试使用 MySQL 函数,如果它返回正确的结果,问题将是 PDO:rowCount()
$stmt = $db->prepare('INSERT INTO table (`id`, `name`, `email`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `name` = ?, `email` = ? ;');
$stmt->execute( array ( $id, $name, $email, $name, $email ) );
$rc = $db->query("SELECT ROW_COUNT()")->fetchColumn();
echo $rc;
关于php - PDO/MySQL rowCount 未按预期返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169981/
有没有办法查看 ROWCOUNT 设置为多少? 用于调用我的存储过程的组件有一个选项可以限制返回的行数,但它显然是通过设置 ROWCOUNT 来实现的。一个存储过程仅返回单个聚合行,但中间查询有时返回
Link @@Rowcount is used to inform the number of rows affected for the last select,insert,update or d
我有一个 SQL Server 存储过程(使用 SQL Server 2008 R2),它执行多个不同的表更新。更新行后,我想在审核表中记录信息。 这是我的伪代码: UPDATE tblName SE
所以我正在尝试这样做.. $userID = $_SESSION['user_session']; $stmt = $this->db->prepare("SELECT * FROM
我的查询有问题。我最近切换到 PDO,这对我来说有点陌生。现在我需要在我的查询中使用 JOIN 来从另一个表中获取数据而无需执行两次。 问题是,我得到这个错误: Call to a member fu
我在两个不同的页面上不断收到 function rowCount() on a non-object 错误。知道为什么会发生这种情况以及我如何更改代码以防止它发生吗? 错误-如下 Fatal erro
我有这个问题: $butacas= $this->pdo->prepare('SELECT COUNT( * ) FROM `usuarios` WHERE `sala` LIKE :nombreSa
我有一个返回团队列表的 SQL 函数。 我想通过联合将附加列表加入该列表,但前提是第一个选择返回多行。 就像是: CREATE FUNCTION Teams() RETURNS TABLE AS RE
我有这个存储过程来保存两个表 ACDPrograms 和 DefaultCourses 中的值。这是我的全局参数 create proc USPSvUpdtACDProgramFromTypes
我正在根据我提前确定的参数运行一组迭代 SQL 查询。执行此 .sql 脚本中的每组查询并将行插入到临时表中。我想做的是在将一行插入临时表后停止其余语句的执行。为此,我在每次插入后检查@@ROWCOU
下面是我拥有的 SQL 脚本的简化版本。 print @RowNum 始终显示 0,而不是第一个结果集的真实记录数。怎么了?谢谢。 declare @i int, @RowNum int set @i
我有这个存储过程来保存两个表 ACDPrograms 和 DefaultCourses 中的值。这是我的全局参数 create proc USPSvUpdtACDProgramFromTypes
@@rowcount 的范围是什么? MSDN没有提及其范围。 Returns the number of rows affected by the last statement. 好的。 在我的 S
我正在使用带有 SELECT 的 INSERT 将一个数字或行插入到一个表中。事务完成后,我想将@@ROWCOUNT 和@@ERROR 值都存储到locallay 声明的变量中。 INSERT Sub
我见过人们这样使用 rowCount... if ($q -> rowCount() prepare("SELECT * FROM hotlinks WHERE id = ?"); $q -
我正在使用以下查询更新 mysql 数据库中的多条记录。 $conn->beginTransaction(); try { $stmt = $conn->prepare('UPDATE pro
我有以下代码: $queryMobileNumber = $dbh->prepare("SELECT mobile_number FROM $tableBusinessOwner WHERE busi
在 mysql 中创建新用户: $query = $dbconnection->prepare("CREATE USER 'john'@'localhost' IDENTIFIED BY 'mypas
我正在使用 PDO rowCount() 来了解 UPDATE 是否成功。问题是 rowCount() 在查询成功但没有要更新的行的情况下不会返回任何内容。 这对我不利,因为在这种情况下我运行 INS
我目前正在开发一个在 32 位机器上运行良好的 python 应用程序。现在我必须转移到 64 位。我目前面临的问题是这里没有正确获取数据库中的数据,但是如果我在 32 位机器上运行相同的查询,它就可
我是一名优秀的程序员,十分优秀!