我正在尝试这样做,当用户输入一个区域的名称时,如果重复同一个区域,它会在屏幕上显示"它发生错误",但我不能这样做。 /> Region.php:
class Region
{
private $regID;
private $regName;
private function loadData()
{
if(isset($_POST["regID"]))
{
$this->setRegID($_POST["regID"]);
}
if(isset($_POST["regName"]))
{
$this->setRegNombre($_POST["regName"]);
}
}
public function addRegion()
{
$this->loadData();
$link = Connection::connect();
$sql = "INSERT INTO regions(regName) VALUES (:regName)";
$stmt = $link->prepare($sql);
$regName = $this->getRegName();
$stmt->bindParam(":regName",$regName,PDO::PARAM_STR);
if($stmt->execute())
{
return true;
}
return false;
}
}
AddRegion.php:
<?php
require "class/Connection.php";
require "class/Region.php";
$objRegion = new Region();
$objRegion->addRegion();
if($objRegion){
?>
<p>Added region</p>
<?php }else{ ?>
<p>An error occurred.</p>
<?php /*if('error code==666'){ //With the error code show this:
<p>There is already a region with that name.</p>
}*/?>
<?php } ?>
但我在屏幕上看到的内容如下:
警告:PDOStatement :: execute():SQLSTATE [23000]:完整性约束违规:1062重复条目&#39; America&#39;对于关键&#39; regName&#39;在第60行的C:\ xampp \ htdocs \ test \ class \ Region.php
添加了区域
答案 0 :(得分:0)
您收到错误消息,因为表区域中的数据库架构可能将regName定义为UNIQUE。因此,请查看您的数据库架构设计。
使用try..catch
块来捕获PDOException
。
try {
$objRegion->addRegion();
} catch (\PDOException $e) {
$existingkey = "Integrity constraint violation: 1062 Duplicate entry";
if (strpos($e->getMessage(), $existingkey) !== FALSE) {
// here goes is your duplicate data error
} else {
throw $e;
}
}
此示例取自(The only proper) PDO tutorial,值得一读,以便您在PHP中正确使用PDO。