我想使用数据库员工的属性ID和empName向表'pool'添加记录
<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>
<?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值的错误代码。我们怎么做?
答案 0 :(得分:0)
您可以使用mysql_errno()
(或mysqli_errno()
,如果您使用mysqli
)在查询后获取错误编号(如果失败)(请检查mysql_query()
的返回值)。根据{{3}}
#1022
(ER_DUP_KEY
)
答案 1 :(得分:0)
通常,防止SQL错误比捕获它们更好。例如,在尝试插入记录之前,请检查是否存在重复项。
要完全避免此问题,您可以使用auto-increment
字段作为ID,并允许数据库自动分配新号码。然后用户永远不需要输入它,因此不会因重复而发生冲突。
如果您仍然需要检查错误,则可以使用mysql_error()
或mysql_errno()
函数来获取错误详情。
答案 2 :(得分:0)
// 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 :)