我发出此请求:
$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());
我想知道结果是否成功。我怎么能这样做?
答案 0 :(得分:2)
首先,请考虑使用MySQLi或PDO库,因为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放弃并打印出错误。这是因为and
和or
运算符(而不是&&
和||
运算符)具有 lower 优先级,因此{{1将包含比较的结果,如果它是$query_exec
,将导致PHP死亡。
请注意FALSE
的使用。这是一种严格的比较,不会发生类型强制。虽然标准===
运算符在这种情况下会很好(资源不会被强制为FALSE),但在错误检查时使用此运算符是一种很好的做法。许多函数都可以成功并返回==
,而是在出现错误时返回FALSE
,这会被强制转换为NULL
。在这种情况下,需要进行严格的比较以区分FALSE
和FALSE
。
答案 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。如果你不得不问这个问题,为什么还要设置它?