PHP mysqli最佳实践错误处理
我是PHP和mysqli新手,我已经使用以下PHP代码连接到我的MySQL数据库:PHP mysqli最佳实践错误处理,php,mysql,mysqli,Php,Mysql,Mysqli,我是PHP和mysqli新手,我已经使用以下PHP代码连接到我的MySQL数据库: <?php function connect(){ define('DB_USER', 'my_user'); define('DB_PASSWORD', 'my_pw'); define('DB_HOST', 'my_host'); define('DB_NAME', 'my_name'); global $db_conn; $db_conn = mysq
<?php
function connect(){
define('DB_USER', 'my_user');
define('DB_PASSWORD', 'my_pw');
define('DB_HOST', 'my_host');
define('DB_NAME', 'my_name');
global $db_conn;
$db_conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
}
function disconnect(){
mysqli_close($db_conn);
}
addUser($username, $password, $role){
openConnection();
global $db_conn;
//Formulate the query
$q = "INSERT INTO users VALUES ('$username', '$password' , '$role')";
//query database
mysqli_query($db_conn, $q);
closeConnection();
}
如果DB连接失败,应该有类似的处理方法。有人能帮我找到PHP中与数据库相关的错误处理的最佳实践吗
编辑:在阅读注释之后,我已经从代码中删除了所有的“@”字符,因为它们抑制了PHP产生的警告 使用@operator,可以抑制查询错误(请参阅)。正如在评论中提到的,您应该真正检查一种面向对象的数据库操作方式(您可能希望了解或-使用pdo,您可以将异常处理与PDOException一起使用) 关于您的特定代码,您可以使用以下错误处理:
<?php
function connect(){
define('DB_USER', 'my_user');
define('DB_PASSWORD', 'my_pw');
define('DB_HOST', 'my_host');
define('DB_NAME', 'my_name');
global $db_conn;
$db_conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die(mysqli_error())
}
function disconnect(){
mysqli_close($db_conn);
}
addUser($username, $password, $role){
openConnection();
global $db_conn;
//Formulate the query
$q = "INSERT INTO users VALUES ('$username', '$password' , '$role')";
//query database
if (mysqli_query($db_conn, $q) === false)
{
throw new Exception(mysqli_error($db_conn));
}
closeConnection();
return true;
}
每次在一行代码前添加@符号时,都会强制php不要给出关于该行代码的错误
@mysqli_connect
,@
肯定不是最好的做法谢谢提示!因此,如果我正确理解此代码;如果mysqli_query($db_conn,$q)返回false(=数据库出现问题),我们将向“客户端”抛出一个异常,该异常显示错误消息?另外,处理“mysqli_connect(…)”产生的错误如何?mysqli_connect也会在错误时返回false,因此您可以在此处执行类似操作:If(!@mysqli_connect()){抛出新异常('Error while connecting:'.mysqli_Error());}它看起来像是'或者死了(mysqli_Error()'打印得很好:),谢谢您的输入
<?php
function connect(){
define('DB_USER', 'my_user');
define('DB_PASSWORD', 'my_pw');
define('DB_HOST', 'my_host');
define('DB_NAME', 'my_name');
global $db_conn;
$db_conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die(mysqli_error())
}
function disconnect(){
mysqli_close($db_conn);
}
addUser($username, $password, $role){
openConnection();
global $db_conn;
//Formulate the query
$q = "INSERT INTO users VALUES ('$username', '$password' , '$role')";
//query database
if (mysqli_query($db_conn, $q) === false)
{
throw new Exception(mysqli_error($db_conn));
}
closeConnection();
return true;
}
try {
if (addUser('name','pw','role'))
{
echo "all went well";
}
} catch (Exception $e)
{
echo "Mysql error: " . $e->getMessage();
}