尝试将数据插入表时出错

时间:2017-02-22 14:48:48

标签: php mysql

所以我在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
}

或者有什么方法可以解决这个问题吗?

4 个答案:

答案 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_ *,因为它已被弃用。