微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用PDO时重用变量

我必须从至少3个数据库提取数据,重用我的PDO对象有什么问题吗?

$dbh = new PDO('MysqL:host=' . $host . ';dbname=' . $db_name, $user, $password);
$sth = $dbh->prepare($query1);

// do something

$dbh = new PDO('MysqL:host=' . $host2 . ';dbname=' . $db_name2, $user2, $password2);
$sth = $dbh->prepare($query2);

//do something else

抱歉编辑,但这是另一个考虑因素.对于其中的每一个,我显然应该检查连接是否成功,如果不是,则抛出异常:

if (!$dbh) {
    $err=$dbh->errorInfo();
    throw new Exception('Could not connect: ' . $err[2]);
}

我不认为有办法避免这种情况,除非我同时创建所有连接并执行if(!dbh1 |!dbh2){…}.还有别的东西需要考虑.

解决方法:

将$dbh分配给新的PDO()时,技术上不会重用pdo对象.您正在创建一个新的PDO实例并将其分配给您之前使用过的变量.只要您了解程序中发生的事情,这样做就没有错.

编辑:

我正在编辑我的答案,以解决您在上一个问题中添加的新问题.

With each of these I obvIoUsly should check whether or not the connection was successful and throw an exception if it wasn’t:

您可以在try catch中包围连接尝试,这是处理连接错误的典型策略:

<?PHP
    try {
        $dbh = new PDO('MysqL:host=localhost;dbname=databaseName', $userName, $password);

        foreach($dbh->query('SELECT * from TableName') as $row) {
            print_r($row);
        }

        $dbh = null;
    } catch (PDOException $ex) {
        print "Error!: " . $ex->getMessage() . "<br />";
        die();
    }
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐