繁体   English   中英

如何在PHP中捕获错误代码

[英]how to catch error code in PHP

我想将记录添加到表'pool'中,数据库员工具有属性ID和empName

theform.html

<FORM NAME ='form2' METHOD ='POST' ACTION ='result.php' enctype="multipart/form-data">
<B>Board Write</B> <BR>

<INPUT TYPE = Text Name = empID value = 'write ID here'>
<INPUT TYPE = Text Name = empName  VALUE = 'write name here'><P>
<INPUT TYPE = 'Submit' Name = Submit2  VALUE = 'Post'>

</FORM>

result.php

<?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;



?>

在数据库中,ID是唯一的,也是INT数据类型,我想在用户输入数据库中已经存在的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 :)

您可以使用mysql_errno() (如果使用mysqli ,则可以使用mysqli_errno() )在查询失败后获取错误号(检查mysql_query()的返回值)。 根据mysql错误文档,它应该是错误#1022ER_DUP_KEY

通常,防止SQL错误胜于捕获错误。 例如,在尝试插入记录之前,请检查是否存在重复项。

为完全避免该问题,您可以为ID使用auto-increment字段,并允许数据库自动分配新数字。 这样,用户将永远不需要输入它,因此永远不会由于重复而发生冲突。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM