PHP:如何知道我的查询是否成功?

时间:2014-05-19 12:49:15

标签: php sql

我发出此请求:

$query_search = "insert into tbl_user (prenom, nom, ville, username, password) values ('".$prenom."', '".$nom."', '".$ville."', '".$username."', '".$password."') ";

$query_exec = mysql_query($query_search) or die(mysql_error());

我想知道结果是否成功。我怎么能这样做?

5 个答案:

答案 0 :(得分:2)

首先,请考虑使用MySQLiPDO库,因为mysql_前缀已弃用且远不如更新的库安全。

您的新代码如下:

$sql = new MySQLi(//your database host, user, db name and password here);
$query_search = "insert into tbl_user (prenom, nom, ville, username, password) values ('".$prenom."', '".$nom."', '".$ville."', '".$username."', '".$password."') ";

$query_exec = $sql->query($query_search) or die($sql->error);

此外,如果您对使用面向对象的PHP语法感到不舒服,可以使用MySQLi的过程语法,如下所示:

$sql = new MySQLi(//database and connection information as before);
$query_search = "insert into tbl_user (prenom, nom, ville, username, password) values ('".$prenom."', '".$nom."', '".$ville."', '".$username."', '".$password."') ";

$query_exec = mysqli_query($sql, $query_search) or die(mysqli_error($sql));

重要的是要注意,使用MySQLi的新语法,您必须提供带有$sql对象的过程函数作为函数中的link参数

query函数如果查询失败则返回false,如果成功则返回对象,因此您可以使用以下方法测试查询结果:

if($query_exec) { 
    //do your success things 
} else {
    //error handling
}

作为额外的注释和其他用户提到的内容,die并不是必需的,除非绝对 在查询失败后停止执行所有操作。通常,我会将其留在$query_exec = $sql->query($query_search);并在上面的错误处理部分中执行回退。

答案 1 :(得分:1)

mysql_query会返回资源,或者FALSE出错。您可以通过检查mysql_query返回的内容来检查失败,例如

$query_exec = mysql_query($query_search);
if($query_exec === FALSE)
    ...error handling...
else
    ...success...

目前,出错时,您告诉PHP放弃并打印出错误。这是因为andor运算符(而不是&&||运算符)具有 lower 优先级,因此{{1将包含比较的结果,如果它是$query_exec,将导致PHP死亡。

请注意FALSE的使用。这是一种严格的比较,不会发生类型强制。虽然标准===运算符在这种情况下会很好(资源不会被强制为FALSE),但在错误检查时使用此运算符是一种很好的做法。许多函数都可以成功并返回==,而是在出现错误时返回FALSE,这会被强制转换为NULL。在这种情况下,需要进行严格的比较以区分FALSEFALSE

答案 2 :(得分:0)

试试这段代码:

$query_search = "insert into tbl_user (prenom, nom, ville, username, password) values ('".$prenom."', '".$nom."', '".$ville."', '".$username."', '".$password."') ";

$query_exec = mysql_query($query_search) or die(mysql_error());
if($query_exec)
{
echo "sucess";
}
else
{
echo "failed";
}

答案 3 :(得分:-1)

您可以使用mysql_affected_rows()检查查询中插入或更新的行数。

所以在你的情况下:

$query_search = "insert into tbl_user (prenom, nom, ville, username, password) values ('".$prenom."', '".$nom."', '".$ville."', '".$username."', '".$password."') ";

$query_exec = mysql_query($query_search) or die(mysql_error());

$affected_rows = mysql_affected_rows();

if($affected_rows > 0){
    //Rows inserted.
}

答案 4 :(得分:-2)

你的$ query_exec变量将对此进行判断,即在成功时判断为true,如果失败则判断为false。如果你不得不问这个问题,为什么还要设置它?