下午好,我正在做一个CRUD,我正在给它完成的最后评论,因为主题是,例如,如果在其中一个表中我们放置了一个重复的PK,则抛出PDOException的错误:
SQLSTATE: 23000 (ER_DUP_KEY)
但是,当然,我想知道是否有任何方法可以修改该消息。我看到它是一个重复的主键,但是例如一个在他的BBDD生活中没有看到任何东西的用户不能,我不知道我是否解释,我知道如果我在其上放一个echo
,总会有这样的错误,可能还有其他错误。
这将是朝向BBDD的建设
public function __CONSTRUCT() {
try {
$this->pdo = new PDO('mysql:host=localhost;dbname=prueba;charset=UTF8', 'root', '');
$this->pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
$this->pdo->exec("SET NAMES 'utf8';");
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
die($e->getMessage());
}
}
这就是插入函数:
public function Registrar(Categoria $data) {
try {
$sql = "INSERT INTO categoria (acronimo,categoria,registro_calidad)
VALUES (?, ?,?)";
//Ejecucion de la consulta siguiente
$this->pdo->prepare($sql)->execute(array(
$data->__GET('acronimo'),
$data->__GET('categoria'),
$data->__GET('registro_calidad')
)
);
} catch (PDOException $e) {
die($e->getMessage());
}
}
寻求帮助
答案 0 :(得分:0)
您可以考虑从PDOException
中映射出所有错误...例如:
function outputPDOerror($errorCode = 0) {
$errors = [
'23000' => "Error: Duplicate Key",
'23001' => "Error: Some other error"
];
return array_key_exists($errorCode, $errors) ? $errors[$errorCode] : 'Unknown Error!';
}
然后在你的try / catch块中:
catch (PDOException $e) {
die(outputPDOerror($e->getCode()));
}