[英]How to handle SQLSTATE[23000]: Integrity constraint violation: 1062
一切都在我的代碼中工作,但是如果您要創建一個用戶,即使您使用相同的電子郵件創建多個用戶,它也會接受我已經嘗試搜索一些解決方案並將其放入我的代碼中,但我仍然無法使其工作並且我怎樣才能使 SQLSTATE[23000]: Integrity constraint conflict: 1062 更改為“錯誤電子郵件已經存在”? 有可能嗎?
添加表單
如果有重復,我還想顯示錯誤消息
<style type="text/css">
#dis{
display:none;
}
</style>
<div id="dis">
<!-- here message will be displayed -->
</div>
<form method='post' id='emp-SaveForm' action="#">
<table class='table table-bordered'>
<tr>
<td>First Name</td>
<td><input type='text' name='fname' class='form-control' required /></td>
</tr>
<tr>
<td>Last Name</td>
<td><input type='text' name='lname' class='form-control' required></td>
</tr>
<tr>
<td>Contact Number</td>
<td><input type='number' name='contactnum' class='form-control' required></td>
</tr>
<tr>
<td>Email</td>
<td><input type='email' name='email' class='form-control' required /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name='pass' class='form-control' required /></td>
</tr>
<tr>
<td>Language</td>
<td><input type='text' name='lang' class='form-control' required /></td>
</tr>
<tr>
<td colspan="2">
<button type="submit" class="btn btn-primary" name="btn-save" id="btn-save">
<span class="glyphicon glyphicon-plus"></span> Save this User
</button>
</td>
</tr>
</table>
創建.php
<?php
require_once 'dbconfig.php';
if($_POST)
{
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$contactnum = $_POST['contactnum'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$lang = $_POST['lang'];
try{
$stmt = $db_con->prepare("INSERT INTO tbluser(fname,lname,contactnum,email,pass,lang) VALUES(:ufname,:ulname,:ucontact,:uemail,:upass,:ulang)");
$stmt->bindParam(":ufname", $fname);
$stmt->bindParam(":ulname", $lname);
$stmt->bindParam(":ucontact", $contactnum);
$stmt->bindParam(":uemail", $email);
$stmt->bindParam(":upass", $pass);
$stmt->bindParam(":ulang", $lang);
if($stmt->execute())
{
echo "Successfully Added";
}
else{
echo "Query Problem";
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}
?>
我只是 php 新手我在數據庫中使用 PDO 不知道它是否是一件好事,感謝您的幫助,請讓我知道我是否可以使用或只是復制粘貼您的代碼:)
你應該編輯你的create.php
並從數據庫中添加電子郵件檢查代碼,請檢查下面的代碼,以獲得更多的想法。
<?php
require_once 'dbconfig.php';
if ($_POST) {
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$contactnum = $_POST['contactnum'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$lang = $_POST['lang'];
// it's good habit to validate email address always
// i checked here it should not be blank
if ($email != '') {
// check in database email address is already taken
$sel = $db_con->prepare("select email from tbluser where email = :email");
$sel->execute(array(':email' => $email));
$row = $sel->fetch();
// if you found any row with current entered email then send it to else
if ($sel->fetchColumn() == 0) {
try{
$stmt = $db_con->prepare("INSERT INTO tbluser(fname,lname,contactnum,email,pass,lang) VALUES(:ufname,:ulname,:ucontact,:uemail,:upass,:ulang)");
$stmt->bindParam(":ufname", $fname);
$stmt->bindParam(":ulname", $lname);
$stmt->bindParam(":ucontact", $contactnum);
$stmt->bindParam(":uemail", $email);
$stmt->bindParam(":upass", $pass);
$stmt->bindParam(":ulang", $lang);
if($stmt->execute())
{
echo "Successfully Added";
}
else{
echo "Query Problem";
}
}
catch(PDOException $e){
echo $e->getMessage();
}
} else {
echo $email . ' already taken, try other email address';
}
} else {
echo 'Email address is blank';
}
}
?>
您需要將 PDO 錯誤模式設置為。 例子:
/* @var $dbConn PDO */
$dbConn = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUsername, $dbPassword);
/* set the PDO error mode to exception */
$dbConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
然后將您的執行包裝在 try catch 中以檢測錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.