我有这个查询,如果它返回成功,我想要另一个函数来处理,如果没有,不要处理该函数。需要测试sql查询是否成功
这里是代码为运行查询
global $DB;
$DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");
我想这是一样的东西......
if($DB) {
//success
} else {
//failure
}
我有这个查询,如果它返回成功,我想要另一个函数来处理,如果没有,不要处理该函数。需要测试sql查询是否成功
这里是代码为运行查询
global $DB;
$DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");
我想这是一样的东西......
if($DB) {
//success
} else {
//failure
}
这是你可以测试
$query = $DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");
if($query) // will return true if succefull else it will return false
{
// code here
}
这是否适用于PHP的Storeprocedures和PDO api? – 2013-10-08 23:50:15
这将返回true,即使0行受到影响 - 它只会返回false,如果在查询中有错误,所以对于UPDATE SQL我会建议,mysql_affected_rows() – 2016-10-03 20:57:53
我明白,说“成功”你想知道是否有行已更新。你可以用这个功能来检查它。
如果使用PDO - >http://www.php.net/manual/en/pdostatement.rowcount.php
正是我需要的。 – 2015-03-04 23:06:32
这已在php7中删除。 – GeneCode 2018-01-24 07:19:26
if ($DB->query(...)) { success }
else { failure }
查询应该返回失败错误(如果你使用的mysql_query或$ mysqli->查询)。如果你想测试,如果更新查询实际上做了什么(这是比“成功”完全不同的东西),然后使用mysql_affected_rows或$ mysqli-> affected_rows
global $DB;
$status = $DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");
if($status == false)
{
die("Didn't Update");
}
如果您在使用后端mysql_query
(无论$DB->query()
用于查询数据库),它将基于它们的状态为INSERT
,UPDATE
和DELETE
(和其他几个)命令返回TRUE
或FALSE
。
if ($DB->rowCount() > 0)
{/* Update worked because query affected X amount of rows. */}
else
{$error = $DB->errorInfo();}
如果值是0,那么它是不是成功的最简单的方法,但如果1,则成功的。
$this->db->affected_rows();
这已被证明是最安全的机制,我测试失败的插入或更新:
$result = $db->query(' ... ');
if ((gettype($result) == "object" && $result->num_rows == 0) || !$result) {
failure
}
,如果你不使用->
格式,你可以这样做:
$a = "SQL command...";
if ($b = mysqli_query($con,$a)) {
// results was successful
} else {
// result was not successful
}
定义“成功”。如“在没有错误的情况下运行”那样成功,或者在“找到带有id $ member_id的记录”中成功? – 2010-01-13 21:17:03
您可能想考虑使用PDO而不是mysqli – 2010-01-13 21:18:20
@ d03boy想要对该评论进行downvote。因为他没有提到它,所以你不能假设他正在使用什么。另外,还有一些关于PDO和MySQLi的讨论,它们都有它们的优点。因此,如果查询成功运行,您不能仅仅说'使用PDI over MySQLi' – 2010-01-13 21:25:51