2010-01-13 29 views
12

我有这个查询,如果它返回成功,我想要另一个函数来处理,如果没有,不要处理该函数。需要测试sql查询是否成功

这里是代码为运行查询

global $DB; 
$DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'"); 

我想这是一样的东西......

if($DB) { 
    //success 
} else { 
    //failure 
} 
+3

定义“成功”。如“在没有错误的情况下运行”那样成功,或者在“找到带有id $ member_id的记录”中成功? – 2010-01-13 21:17:03

+1

您可能想考虑使用PDO而不是mysqli – 2010-01-13 21:18:20

+3

@ d03boy想要对该评论进行downvote。因为他没有提到它,所以你不能假设他正在使用什么。另外,还有一些关于PDO和MySQLi的讨论,它们都有它们的优点。因此,如果查询成功运行,您不能仅仅说'使用PDI over MySQLi' – 2010-01-13 21:25:51

回答

22

这是你可以测试

$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 
} 
+3

这是否适用于PHP的Storeprocedures和PDO api? – 2013-10-08 23:50:15

+3

这将返回true,即使0行受到影响 - 它只会返回false,如果在查询中有错误,所以对于UPDATE SQL我会建议,mysql_affected_rows() – 2016-10-03 20:57:53

0
if ($DB->query(...)) { success } 
else { failure } 

查询应该返回失败错误(如果你使用的mysql_query或$ mysqli->查询)。如果你想测试,如果更新查询实际上做了什么(这是比“成功”完全不同的东西),然后使用mysql_affected_rows或$ mysqli-> affected_rows

1
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,UPDATEDELETE(和其他几个)命令返回TRUEFALSE

3
if ($DB->rowCount() > 0) 
    {/* Update worked because query affected X amount of rows. */} 
else 
    {$error = $DB->errorInfo();} 
2

如果值是0,那么它是不是成功的最简单的方法,但如果1,则成功的。

$this->db->affected_rows(); 
0

这已被证明是最安全的机制,我测试失败的插入或更新:

$result = $db->query(' ... '); 
if ((gettype($result) == "object" && $result->num_rows == 0) || !$result) { 
    failure 
} 
0

,如果你不使用->格式,你可以这样做:

$a = "SQL command..."; 
if ($b = mysqli_query($con,$a)) { 
    // results was successful 
} else { 
    // result was not successful 
}