从php4到php5.4修改全局MySQL db文件为MySQLi db文件


Changing a global MySQL db file to MySQLi db file from PHP 4 to PHP 5.4

我一直使用以下MySQL数据库连接程序编码,而不是在PHP 4上运行OO,现在我正在将一些旧网站移动到PHP 5.4:

    <?php
global $db_user;
global $db_pass;
global $db_host;
global $db_name;
$db_user    = 'USERNAME';
$db_pass    = 'PASSWORD';
$db_host    = 'HOST';
$db_name    = 'DBNAME';
function do_query ( $sql ) 
{
    global $db_user;
    global $db_pass;
    global $db_host;
    global $db_name;
    mysql_pconnect( $db_host, $db_user, $db_pass )or die("Cant connect to $db_host: ");
    mysql_select_db( $db_name )or die("Cant select $db_name: ");
    $res = mysql_query( $sql )or die("You messed up in your sql Using <b>$sql</b>'n'r" . mysql_error());
    return $res;
}
?>

我怎么能改变这与PHP 5.4工作,因为我的网站所需要的是改变这个文件,因为其他一切现在都是最新的,我与MySQLi连接的当前方式永远不会以同样的方式输出错误?

提前感谢。

更新:

我试了如下:

<?php
$db_user    = 'USERNAME';
$db_pass    = 'PASSWORD';
$db_host    = 'HOST';
$db_name    = 'DBNAME';
function do_query ( $sql ) 
{
    mysqli_connect( $db_host, $db_user, $db_pass )or die("Cant connect to $db_host: ");
    mysqli_select_db( $db_name )or die("Cant select $db_name: ");
    $res = mysqli_query( $sql )or die("You messed up in your sql Using <b>$sql</b>'n'r" . mysqli_error());
    return $res;
}
?>

使用mysqli_close();在最后,但它仍然不工作。

我还试着在程序中使用:

$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}

但我似乎不能使它作为一个功能。

我已经用不同的版本做了大量的测试,但我不想用大多数人已经知道的信息来填充页面,所以我只是把我过去使用过的原始代码放在上面,因为我有很多其他的变化我已经尝试过了。我不只是试图推卸责任,只是试图解释我到底想转换到mysql。如果人们认为这毫无意义,我很抱歉,但我被困住了。谢谢。

一帖三疵。

首先,使用函数创建连接然后再创建查询是一个坏主意。

其次,您正在使用持久连接。因此,即使页面完成,连接仍然存在。这样将耗尽数据库连接池。

第三,你正在使用mysql_函数,这是不赞成的。

所以这是现在做事情的首选方法,使用mysqli和对象方法。我通常不推荐$GLOBALS,但听起来你正在使用遗留代码

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
function do_query($sql) {
    $mysqli = $GLOBALS['mysqli'];
    $res = $mysqli->query($sql)or die("You messed up in your sql Using <b>$sql</b>'n'r" . mysqli->error);
    return $res;
}