有没有办法用mysql_query设置默认数据库句柄?

时间:2010-07-27 18:47:19

标签: php mysql

有没有办法用mysql_query设置默认数据库句柄?所以我知道mysql_query可以在没有sql句柄的情况下调用,但它基本上会使用你从 last mysql_connect获得的任何句柄。如果我想自己设置默认句柄怎么办?


我只是想清楚地说明我们编写的所有代码都没有传入处理程序。我们无法改变它们。我们在幕后有一些代码可以在不同的数据库集群之间更改数据库。我们希望能够在不重复调用mysql_connect的情况下在数据库之间切换。

4 个答案:

答案 0 :(得分:3)

超级贫民窟版本。

$defaultHandle;

function SetDefaultHandle($handle){
    global $defaultHandle;
    $defaultHandle = $handle;
}

function q($query){
    global $defaultHandle;
    return mysql_query($query,$defaultHandle);
}

答案 1 :(得分:0)

如果要提供连接,可以在函数调用中将其作为第二个参数传递。有关详细信息,请参阅documentation of mysql_query

答案 2 :(得分:0)

试试这个:

$dbc = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_query($query, $dbc);

来自manual

  

resource mysql_query ( string $query [, resource $link_identifier ] )

     

link_identifier - MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成E_WARNING级别错误。

答案 3 :(得分:0)

而不是指向你手册,而你现在已根据你的问题阅读了这本手册......

您无法使用mysql扩展程序执行此操作。

魔术“选择最后一个句柄打开”行为是由扩展本身定义的 。你无能为力改变这种行为。

您要求的行为将需要自定义代码,几乎可以肯定用适当的包装器替换每个函数的每个调用,该包装器为您的负载平衡情况选择正确的数据库句柄。