所以我在php文件中有这个代码:
$query="INSERT INTO tec (name) VALUES ('$name')";
$done=mysql_query($query);
if($done == 'null') {
$output = json_encode(array('type'=>'error', 'message' => $mess['error'].$done.'</b></div>'));
} else {
$output = json_encode(array('type'=>'success', 'message' => $mess['success']));
}
它将名称插入名为“tec”的表中。如果$done == 'null'
,那么我打印一条错误消息。
问题是,当我运行代码时,它正确地插入数据,但我收到错误消息。
我试着读$done
,等于1。
我应该做点什么:
if($done == 1){
//OK
}else{
//NOT OK
}
或者有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
根据mysql_query函数&php; manual
的文档对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()成功时返回TRUE,错误时返回FALSE。
所以,搜索它是真还是假。
if ($done == TRUE) {
答案 1 :(得分:2)
documentation表示mysql_query
在出错时返回FALSE
。这意味着不是测试它是否等于'null'
(一个比较为TRUE
的字符串),你可以直接测试布尔值:
if($done){
//OK
}else{
//NOT OK
}
如果我没有提到mysql_*
系列函数已弃用,不安全, 将会失败,那将是我的疏忽从未来版本的PHP中删除 !相反,我个人推荐PDO,我已经使用了很多成功。
答案 2 :(得分:1)
嗨,我认为你应该使用布尔值 试试这个(你最好使用mysqli而不是mysql
if(!done)
{
// something wrong
echo mysql..
}
else
{
// everything works fine....
}
答案 3 :(得分:1)
错误捕获必须如下所示:
if($done === false){
//NOT OK
}else{
//OK
}
但正如@John Conde所提到的那样,不要使用mysql_ *,因为它已被弃用。