小随笔——数据库级联、PDO捕获数据库异常

小随笔——20171204

♠ ♥ ♦ ♣ 该文章仅为平时的笔记,非商用,如有侵权请联系博主删除 ♣ ♦ ♥ ♠


目录:

♠ __ (数据库)数据库级联删除;

♥ __ (PHP)PDO数据插入异常捕获;


环境:win7


相关问题笔记:

♠ __ (数据库)数据库级联删除:

问题描述:当一个学生表有字段“student_id”,成绩表也有字段“student_id”,成绩表的“student_id”为成绩表的外键,此时,如果要删除学生表的“student_id”会提示错误,删除失败。
其中一个解决办法是:级联删除。
1、第一种情况,表已经建好的,这样修改:

ALTER TABLE SC    
   ADD CONSTRAINT main_id_cons
     FOREIGN KEY (student_id)  REFERENCES  Student(student_id)  ON DELETE CASCADE;                 /*SC为成绩表,Student为学生表*/

2、第二种情况,建(成绩)表过程:

Create table SC   
(  
SC_id int primary key,            /*成绩表编号*/  
student_id varchar(10) not null,  /*学生编号*/
class_id varchar(10) not null,    /*课程编号*/
score tinyint                     /*成绩*/

foreign key (student_id) references Student(student_id) ON Delete cascade                           /*级联删除语句 */
)  

♥ __ (PHP)PDO数据插入异常信息捕获:

向数据库插入一条数据时,若插入错误,需要获知错误的信息。
1、PDO连接数据库(以MSSQL为例)

try{
    $db = new   PDO("sqlsrv:YourServerName;Database=activity_online","sa","password");
        }catch(PDOException $e){
            echo "ERROR:".$e->getMessage();
    }

2、设置错误模式

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

3、插入操作

try{
    $result = null;
    $sql = "INSERT INTO Activity VALUES('098','*','*','*','*')";

    $result = $db->exec($sql);

}catch (PDOException $e){
    echo 'error'.$e->getMessage();
}

4、返回插入错误信息
“errorSQLSTATE[23000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]违反了 PRIMARY KEY 约束“PK__Activity__C697D363FED96916”。不能在对象“dbo.Activity”中插入重复键。重复键值为 (098)。”

5、处理错误,完成


仅作为日常笔记使用,有点简单,大家有什么想法也可以交流哟~

扫描二维码关注公众号,回复: 1700273 查看本文章

猜你喜欢

转载自blog.csdn.net/greahow/article/details/78710322