我在网站中使用PDO,现在我需要一个使用mysql_xxx函数的php类。它不连接并选择db本身,您应该这样使用它:
if (!($connection = @mysql_connect($MySQL_host, $MySQL_user, $MySQL_pass))) {
die('Error connecting to the database!'); }
if (!@mysql_select_db($MySQL_database, $connection)) {
die('Error selecting database!'); }
require '../Zebra_Mptt.php';
$mptt = new Zebra_Mptt();
$foo = $mptt->add(0, 'Foo');我可以创建和共享PDO和mysql_函数之间的连接或任何更有效的连接吗?
发布于 2013-08-21 06:52:20
我可以创建和共享PDO和mysql_函数之间的连接吗?
不,这种特性在PHP中是不可用的。
或者其他更有效率的东西?
好的。有效的方法是program against interfaces。Zebra_Mptt库应该为它使用的数据库适配器定义一个接口,以便您可以用重用数据库连接的接口来替换它。
由于当前没有,您需要重构它,将数据库交互调用封装到该库的标准数据库连接对象中,然后提取该连接对象的接口,然后创建PDO变体并将其注入。
我只是简单地看了一下,这门课相当直截了当,所以这应该只是直截了当。它所做的就是提供一些SQL查询,并在一开始检查数据库是否在线,您可以轻松地映射和延迟。
如果您不想这样做,您可以为mysql_*接口使用一个预先存在的包装器,或者替换现有库中的前缀,或者只是禁用mysql扩展,然后让它创建基于PDO的函数。这样一个包装器就在这里:
用法:
<?php
require('/path/to/mysqlpdo.php');
mysqlpdo::createfunctions('mysql');不过,它需要一个额外的mysql_ping()和mysql_real_escape_string()包装才能工作,但这应该很容易实现,但在这一领域没有什么是完美的。
发布于 2013-08-21 06:47:12
你不能。你必须为此建立两个分离的连接。但是,您也可以将该类更改为使用PDO或找到另一个类。
https://stackoverflow.com/questions/18350493
复制相似问题