如何检查记录是否已插入数据库表?

时间:2014-01-13 15:17:02

标签: php mysql

如何在代码中检查插入成功?

我尝试在下面测试我的代码,但它不起作用。它每次只返回 insert

<?PHP
   include("connect.php");

    $sql = "INSERT INTO details (name , month , description) 
            SELECT name , month , description 
            FROM details_temporary WHERE id = 'xxxxxx'";

   $dbQuery = mysql_query($sql);

   if($dbQuery) {
      echo "insert";
   }
   else {
      echo "not insert";
   }
?>

3 个答案:

答案 0 :(得分:1)

  

Please, don't use mysql_* functions in new code.   它们不再被维护,deprecation process已经开始了。看到   red box?   了解prepared statements,   并使用PDO或   MySQLi - 这个   article会   帮你决定哪个。

使用MySQLi功能的示例如下:

$mysqli = new mysqli('localhost', 'root', 'password', 'database_name');

$sql = "INSERT INTO details (name, month, description) VALUES ('Alex', 'October', 'My Birthday')";
$result= $mysqli -> query($sql);
$affected = $mysqli -> affected_rows;

if($affected == 1){
   echo 'Inserted';
}else{
   echo 'Did not insert';
}

答案 1 :(得分:0)

首先,不要使用MySQL函数,它们已被弃用且不安全,请查看使用MySQLi或PDO。

其次,MySQL只会在失败时返回错误,因此您只需运行:

if (!$dbQuery) {
    die('Invalid query: ' . mysql_error());
}

如果不成功,这将会死并打印错误。

如果要进一步检查,可以检查mysqli_insert_id(),因为只有在查询成功时才会设置(仅适用于插入,而不适用于更新等)。

答案 2 :(得分:0)

您正在使用INSERT FROM SELECT,如果select没有结果,那么它将不会插入任何内容,并且在$ dbQuery中仍然为true。

使用mysql_affected_rows.:获取先前MySQL操作中受影响的行数

从PHP 5.5开始,不推荐使用mysql_ *函数

如果您正在开发一个新项目而不是更改旧项目,最好使用pdo / mysqli等。