- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 php 代码中有一个实用程序类,它为一些 mysql 函数提供包装器。其中一个名为 query()
的函数接受查询字符串作为参数,然后执行该查询。在此查询函数中,我想查明给定查询是数据状态更改查询 (UPDATE/INSERT/DELETE etc.)
还是简单的数据提取查询 (SHOW/SELECT)
.
我正计划为此使用 mysql_affected_rows
函数,因为 php 手册说此函数“获取受 last INSERT、UPDATE、REPLACE 或 DELETE 查询影响的行数
”。
我假设我会为 SELECT 查询得到 0 或 null。我知道即使那些未进行任何修改的 UPDATE/DELETE
查询也会返回 0,但从我的代码角度来看这没问题,因为我只想识别那些实际进行了一些数据修改的查询。
但是当我实际执行代码时,mysql_affected_rows
返回我为 SELECT 查询选择的行数。
这是预期的行为吗?我查阅了 php 手册,但他们没有详细说明在 SELECT 查询的情况下 mysql_affected_rows
的行为。
我查阅了 MySql 文档,它说 MySql mysql_affected_rows
函数应该像 mysql_num_rows
一样工作(这与我看到的行为一致)。
那么有没有其他 php 函数可以帮助我识别查询类型而无需实际解析查询?
最佳答案
也许您尝试的太复杂了,字符串解析在这里并不是最糟糕的主意。
或者您知道任何查询不是以它正在做的事情开始的吗?
无论如何,mysql_query
中的多重查询不可用。
public function query($query) {
$state = null;
if (stripos(trim($query), 'INSERT') === 0) {
$state = 'insert';
}
elseif (stripos(trim($query), 'REPLACE') === 0) {
}
elseif (stripos(trim($query), 'UPDATE') === 0) {
}
elseif (stripos(trim($query), 'SELECT') === 0) {
$state = 'select';
}
elseif (stripos(trim($query), 'SET') === 0) {
$state = 'option';
}
else {
$state = '?';
}
/* ... */
}
关于php - mysql_affected_rows 找出查询的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25724450/
我的 php 代码中有一个实用程序类,它为一些 mysql 函数提供包装器。其中一个名为 query() 的函数接受查询字符串作为参数,然后执行该查询。在此查询函数中,我想查明给定查询是数据状态更改查
我正在尝试显示受影响的行,但由于某种原因它不起作用。当我运行下面的代码时,PHP 的 mysql_affected_rows() 不显示任何内容。有什么建议 这就是我所拥有的: prepare('DE
我在查询中使用了 mysql_affected_rows,但它似乎返回 false,即使查询确实执行了,所以我有点困惑.... 这是我的: $check = mysql_query("DELETE F
我将此代码用作电子邮件确认脚本的一部分。它工作得很好,除了我想不出一种方法来区分某人何时提供了无效的电子邮件地址与何时他们只是刷新了页面(即已经确认了他们的帐户)。我唯一能想到的就是在始终更新的 us
我们如何使用 mysql_affected_rows() 在存储过程中.. 最佳答案 使用 ROW_COUNT()信息功能。 ROW_COUNT() returns the number of row
我很难解决这个 PHP/MySQL 问题。让我向您展示我的数据库,并说明我的情况: 创建表: CREATE TABLE IF NOT EXISTS `users` ( `id` int(50) N
在我的 PHP INSERT/UPDATE 代码中,我一直为一个相当基本的概念而苦恼。我是否应该始终在每次插入/更新后检查受影响的行数,因为在绝大多数情况下我只执行一次插入/更新并且它似乎导致的问题多
我的代码遇到了一个非常有趣的问题。基本上,当我第一次运行代码时,我从 mysqli_effected_rows() 函数中得到了正确的结果。但是当我第二次运行相同的脚本时,它总是给我“-100” 如果
是否可以使用 mysql_affected_rows 来获取用户进行更新时受影响的行数?如果有多个用户更新密码并且我需要知道每个用户更新是否成功,该怎么办?因此,如果 3 个用户同时进行更新,即使其中
我对 PHP 中的 mysql_affected_rows() 函数有疑问。我使用 MySQL 更新,在 phpMyAdmin 中我可以看到,'confirmed' 从 0 变为 1,但是 mysql
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Warning: mysql_fetch_array(): supplied argument is not
使用以下代码来防止竞争条件是否安全? (key和status字段和mysql_affected_rows用来实现加锁) $mres = mysql_query("SELECT `values`, `k
这个问题在这里已经有了答案: Can I mix MySQL APIs in PHP? (4 个答案) 关闭 7 年前。 我需要更新 mysql 表,并使用 php 获取更新的表数,代码如下所示,
我想做的是:(以编程方式) 更新id为某物的状态,如果没有更新的行,给出错误:我们找不到id为某物的记录,否则给出消息成功。 在这里,我使用 mysql_affected_rows() 来了解某行是否
执行SQL语句时,如 INSERT INTO table ... 在 DUPLICATE KEY UPDATE ...我依靠 mysql_affected_rows() 来确定是否执行了插入或更新。作
mysql_query("update users set balance=balance+'$pwbalance'-'$totalprice' where memberid='$memberid'
我最近在这里问了这个问题:Why doesn't this query produce a mysql_error() result? 建议的解决方案是使用 mysql_affected_rows()
foreach($chk as $key=>$invoiceno) { $QryUp = mysql_query("update `tbl1` set `paid` = 'y' where `in
我遇到了函数 mysql_affected_rows 的奇怪行为,即使数据库中的寄存器发生更改,它也会返回 0。 我已将问题简化为尽可能简单的事情,因此您可以轻松地重现它。 一方面,我有一个文件(pa
我正在从表单上传 csv。我正在尝试使用 mysql_affected_rows 来确定它是否成功。数据正在上传到表中,但 mysql_affected_rows 未评估为真。请帮助: 1) { e
我是一名优秀的程序员,十分优秀!