我一直使用以下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;
}