返回最近一次与
连接句柄
关联的
INSERT,UPDATE
或
DELETE
查询所影响的记录行数.FOUND_ROWS()
:
select
ROW_COUNT()
:
update
delete
insert.
FOUND_ROWS()
:
select
ROW_COUNT()
:
update
delete
insert.
MySQL的函数中,SELECT是另外一个单独的函数
FOUND_ROWS()
,
UPDATE等是
ROW_COUNT()
如下案例:
mysql>
INSERT
INTO
t
VALUES(1),(2),(3)
Query
OK,
3
rows
affected
(0.00
sec)
Records:
3
Duplicates:
0
Warnings:
0
mysql>
SELECT
ROW_COUNT()
+-------------+
|
ROW_COUNT()
|
+-------------+
|
3
|
+-------------+
1
row
in
set
(0.00
sec)
mysql_affected_rows
(PHP
3,
PHP
4
,
PHP
5)
mysql_affected_rows
--
取得前一次
MySQL
*** 作所影响的记录行数说明
int
mysql_affected_rows
(
[resource
link_identifier])
mysql_affected_rows()
返回最近一次与
连接句柄
关联的
INSERT,UPDATE
或
DELETE
查询所影响的记录行数。如果连接句柄没有指定,
则默认使用最近一次由
mysql_connect()
函数打开的连接句柄。
注:
如果你使用事务处理(transactions),你需要在
INSERT,UPDATE
或
DELETE
查询后调用
mysql_affected_rows()
函数,而不是在
commit
命令之后。
如果最近一次 *** 作是没有任何条件(WHERE)的
DELETE
查询,
在表中所有的记录都会被删除,但该函数返回值为
0。
注:
当使用
UPDATE
查询,MySQL
不会将原值和新值一样的列更新。
这样使得
mysql_affected_rows()
函数返回值不一定就是查询条件所符合的记录数。
只有真正被修改的记录数才会被返回。
mysql_affected_rows()
函数不适用于
SELECT
语句;只适用于能够修改记录的语句中。请使用
mysql_num_rows()
函数来获得
SELECT
所返回的记录行数。
如果最近一次查询失败的话,函数返回
-1。
例子
1.
Delete
*** 作
?php
/*
连接数据库
*/
mysql_pconnect("localhost",
"mysql_user",
"mysql_password")
or
die
("Could
not
connect"
.
mysql_error())
mysql_select_db("mydb")
/*
这会返回有效的被删除记录数。
*/
mysql_query("DELETE
FROM
mytable
WHERE
id
<
10")
printf
("Records
deleted:
%d/n",
mysql_affected_rows())
/*
没有任何条件(where)的删除语句,返回
0
*/
mysql_query("DELETE
FROM
mytable")
printf
("Records
deleted:
%d/n",
mysql_affected_rows())
?
以上的例子会得出下面的运行结果:
Records
deleted:
10Records
deleted:
0
例子
2.
Update
*** 作
?php
/*
连接数据库
*/
mysql_pconnect("localhost",
"mysql_user",
"mysql_password")
or
die
("Could
not
connect"
.
mysql_error())
mysql_select_db("mydb")
/*
Update
记录
*/
mysql_query("UPDATE
mytable
SET
used=1
WHERE
id
<
10")
printf
("Updated
records:
%d/n",
mysql_affected_rows())
mysql_query("COMMIT")
?
以上的例子会得出下面的运行结果:
Updated
Records:
10
参见
mysql_num_rows()
和
mysql_info()。
mysql_affected_rows()
返回的是对行 *** 作的个数
$query=mysql_query("select
*
from
love_mp3_table
")
mysql_affected_rows()//其实对这个也有效,返回44,在这和mysql_num_rows($query)效果一样
$query=mysql_query("INSERT
INTO
table(id,title,hrefurl)
VALUE('','节节胜利','http://')")
mysql_affected_rows()//返回1
$query=mysql_query("DELETE
FROM
tabel
WHERE
id=45")
mysql_affected_rows()//返回1
$query=mysql_query("UPDATE
table
SET
title='我是'
WHERE
id=44")
mysql_affected_rows()//返回1
你说的应该是这个@@ROWCOUNT
返回受上一语句影响的行数。
语法
@@ROWCOUNT
返回类型
integer
注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。
示例
下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。
UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
select @@ROWCOUNT 就是更新影响的行
本扩展自PHP
5.5.0
起已废弃,并在将来会被移除。应使用
MySQLi
或
PDO_MySQL
扩展来替换之。参见
MySQL:选择
API
指南以及相关
FAQ
以获取更多信息。用以替代本函数的有:
mysqli_affected_rows()
PDOStatement::rowCount()
说明
int
mysql_affected_rows
([
resource
$link_identifier
=
NULL
]
)
取得最近一次与
link_identifier
关联的
INSERT,UPDATE
或
DELETE
查询所影响的记录行数。
参数
link_identifier
MySQL
连接。如不指定连接标识,则使用由
mysql_connect()
最近打开的连接。如果没有找到该连接,会尝试不带参数调用
mysql_connect()
来创建。如没有找到连接或无法建立连接,则会生成
E_WARNING
级别的错误。
返回值
执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回
-1。
如果最近一次 *** 作是没有任何条件(WHERE)的
DELETE
查询,在表中所有的记录都会被删除,但本函数返回值在
4.1.2
版之前都为
0。
当使用
UPDATE
查询,MySQL
不会将原值和新值一样的列更新。这样使得
mysql_affected_rows()
函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。
REPLACE
语句首先删除具有相同主键的记录,然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。
"INSERT
...
ON
DUPLICATE
KEY
UPDATE"
这种情况的查询,当执行了一次
INSERT
返回的值会是
1;如果是对已经存在的记录执行一次
UPDATE
将返回
2。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)