捕捉php中的mysql错误并给出自定义响应

捕捉php中的mysql错误并给出自定义响应,php,mysql,try-catch,Php,Mysql,Try Catch,我有一个网站,你可以输入你看过的电视剧。有两个表,一个表的标题是主键,另一个表引用该标题作为外键 由于数据是由不熟悉编程奇迹的用户输入的,因此我想尝试捕获外键约束失败的mysql错误,并给出类似“title not found”的响应 我知道你可以试试Java中的catch块 我创建这个网站纯粹是为了练习我的网络开发技能,因为我对编程还相当陌生,所以这不是什么严肃的事情。当然。这取决于您使用的MySQL API。如果您使用的是ext/mysql。如果您使用的是mysqli或PDO,这取决于您是否

我有一个网站,你可以输入你看过的电视剧。有两个表,一个表的标题是主键,另一个表引用该标题作为外键

由于数据是由不熟悉编程奇迹的用户输入的,因此我想尝试捕获外键约束失败的mysql错误,并给出类似“title not found”的响应

我知道你可以试试Java中的catch块


我创建这个网站纯粹是为了练习我的网络开发技能,因为我对编程还相当陌生,所以这不是什么严肃的事情。

当然。这取决于您使用的MySQL API。如果您使用的是ext/mysql。如果您使用的是mysqli或PDO,这取决于您是否已将两者配置为引发异常(在这种情况下,
try..catch
可以),或者函数是否在失败时返回false,在这种情况下,您必须添加错误处理代码:

if (!mysqli_query(...)) {
    // handle error here
}

要区分不同的SQL错误,请使用。

您是否已经实现了数据库结构?如果是这样的话,你能发布它吗?你是说我的create table语句吗?我只在php中使用了mysqli函数。就是这样,你能给我一个指南吗?如果可能的话,我的变量返回false。到目前为止,我已经完成了:$insert=mysqli_query($connection,$query);如果($insert==false){die(“error:.mysqli_error($connection));}或者{mysqli_close($connection);echo$title.“已插入”;}那么,您已经完成了90%的步骤。只需代替
die()
,做一些更有用的事情。是的,但问题是,$insert可能由于多种原因而为false,例如,如果用户尝试两次插入同一标题,它将抛出“主键重复条目”错误,如果您正在查找
mysqli_errno()
以获取特定的错误代码,那么使用当前条件我无法区分这两种情况。哦,我明白了,这就是我要查找的,谢谢deceze的帮助!