发生故障时的 PDO 构造
PDO construct in case of failure
我正在使用这种pdo连接函数:
class MyPDO extends PDO{
const DB_HOST='localhost';
const DB_PORT='3306';
const DB_NAME='testdb';
const DB_USER='root';
const DB_PASS='root';
public function __construct($options=null){
parent::__construct('mysql:host='.MyPDO::DB_HOST.';port='.MyPDO::DB_PORT.';dbname='.MyPDO::DB_NAME,MyPDO::DB_USER,MyPDO::DB_PASS,$options);
}
public function query($query){ //secured query with prepare and execute
$args = func_get_args();
array_shift($args); //first element is not an argument but the query itself, should removed
$reponse = parent::prepare($query);
$reponse->execute($args);
return $reponse;
}
}
现在连接和查询工作正常,一切都很好,但如果 mysql 服务器关闭,我正在使用的脚本将停止工作。相反,如果 mysql 服务器没有响应或 mysql 设置设置错误,我希望它 return 一些消息。
我试过
if(new MyPDO===false){echo "The database is down currently. Please try again later."}
但这不起作用。请帮帮我。
我所需要的只是在 mysql 连接不可用时显示一条消息,而不是破坏整个脚本并显示空白页面(就像当前一样)。
来自 PHP PDO documentation。
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
捕获错误并做任何你想做的事。呈现页面、显示错误、重定向等等。
在构建 PDO 时,在父 class 中使用 try catch 应该可行:
try{
//your pdo construction
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
}catch(PDOException $e){
echo "Error"; // you could also add $e->getMessage(); to display a message why your try catch returned false
}
或者你可以这样做:
if($yourpdovar instanceof PDO) {
//succeeded message.
}else{
//error message
}
此代码检查您的变量是否为 PDO 变量。它很简单,您可以将它放在代码中的任何地方。
我正在使用这种pdo连接函数:
class MyPDO extends PDO{
const DB_HOST='localhost';
const DB_PORT='3306';
const DB_NAME='testdb';
const DB_USER='root';
const DB_PASS='root';
public function __construct($options=null){
parent::__construct('mysql:host='.MyPDO::DB_HOST.';port='.MyPDO::DB_PORT.';dbname='.MyPDO::DB_NAME,MyPDO::DB_USER,MyPDO::DB_PASS,$options);
}
public function query($query){ //secured query with prepare and execute
$args = func_get_args();
array_shift($args); //first element is not an argument but the query itself, should removed
$reponse = parent::prepare($query);
$reponse->execute($args);
return $reponse;
}
}
现在连接和查询工作正常,一切都很好,但如果 mysql 服务器关闭,我正在使用的脚本将停止工作。相反,如果 mysql 服务器没有响应或 mysql 设置设置错误,我希望它 return 一些消息。
我试过
if(new MyPDO===false){echo "The database is down currently. Please try again later."}
但这不起作用。请帮帮我。 我所需要的只是在 mysql 连接不可用时显示一条消息,而不是破坏整个脚本并显示空白页面(就像当前一样)。
来自 PHP PDO documentation。
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
捕获错误并做任何你想做的事。呈现页面、显示错误、重定向等等。
在构建 PDO 时,在父 class 中使用 try catch 应该可行:
try{
//your pdo construction
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
}catch(PDOException $e){
echo "Error"; // you could also add $e->getMessage(); to display a message why your try catch returned false
}
或者你可以这样做:
if($yourpdovar instanceof PDO) {
//succeeded message.
}else{
//error message
}
此代码检查您的变量是否为 PDO 变量。它很简单,您可以将它放在代码中的任何地方。