如何捕获PHP中的错误代码

如何捕获PHP中的错误代码,php,mysql,error-handling,Php,Mysql,Error Handling,我想使用数据库employees中的属性ID和empName将记录添加到表“pool” theform.html result.php 在数据库中,ID是唯一的,也是一个INT数据类型,我想捕获错误代码,用户在其中输入数据库中已经存在的ID值。我们如何做到这一点?您可以使用,或者,如果在查询失败后使用mysqli获取错误号,请检查的返回值。根据的规定,应该是错误1022 ER_DUP_键。一般来说,防止SQL错误比捕获SQL错误更好。例如,在您尝试插入记录之前,请检查是否存在重复项 为了完全避免

我想使用数据库employees中的属性ID和empName将记录添加到表“pool”

theform.html result.php
在数据库中,ID是唯一的,也是一个INT数据类型,我想捕获错误代码,用户在其中输入数据库中已经存在的ID值。我们如何做到这一点?

您可以使用,或者,如果在查询失败后使用mysqli获取错误号,请检查的返回值。根据

的规定,应该是错误1022 ER_DUP_键。一般来说,防止SQL错误比捕获SQL错误更好。例如,在您尝试插入记录之前,请检查是否存在重复项

为了完全避免这个问题,您可以为ID使用自动递增字段,并允许数据库自动分配新的编号。这样,用户就不需要输入它,因此就不会因为重复而发生冲突

如果仍然需要检查错误,则可以使用或函数获取错误详细信息

    // returns true if duplicated
function duplicate_catch_error ($database_connection) {
    $mysql_error = array (1022 => "Can't write; duplicate key in table '%s'",1062 => "Duplicate entry '%s' for key %d", 1586 => "Duplicate entry '%s' for key '%s'");  // also allows for the use of sscanf
    if (array_key_exists(mysql_error($database_connection),$mysql_error)) // checks if error is in array
        return true;
    else
        return false;
}
希望这能回答你的问题,mysql现在也贬值了。如果您还不知道,请使用mysqli

首先,您应该防止出现任何错误,例如通过。那你应该这么做。什么是$id?用户为什么指定它?如果$result===false,您可以使用来检索错误消息。请注意,您的数据库代码非常不安全,允许SQL注入。请为root用户创建密码!不要以root用户身份连接到数据库!
<?PHP

      $ID = $_POST['empID'];
      $NAME = "'" . $_POST['empName'] . "'";

       $server = "127.0.0.1"; //connect to server
       $user_name = "root";   
       $password = "";

       $database = "employees";


    $db_handle = mysql_connect($server, $user_name, $password);
    $db_found = mysql_select_db($database, $db_handle);


if($db_found){// there is a database

$tableSQL = "INSERT INTO pool(ID, empName) VALUES " . "(" . $ID . "," . $NAME . ")";


$result = mysql_query($tableSQL);

    if($result){
            print "success!";
    }
    else{
            print "fail!";
        }


}

   mysql_close($db_handle);  //close the connection;



?>
    // returns true if duplicated
function duplicate_catch_error ($database_connection) {
    $mysql_error = array (1022 => "Can't write; duplicate key in table '%s'",1062 => "Duplicate entry '%s' for key %d", 1586 => "Duplicate entry '%s' for key '%s'");  // also allows for the use of sscanf
    if (array_key_exists(mysql_error($database_connection),$mysql_error)) // checks if error is in array
        return true;
    else
        return false;
}