【发布时间】:2014-09-17 22:23:19
【问题描述】:
我一直使用以下 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());
}
但我似乎无法将它作为一个函数来工作。
我已经对不同版本进行了大量测试,但我不想用大多数人已经知道的信息来过度填充页面,所以我只放了我过去使用过的原始代码,因为我还有很多其他变体我努力了。我不只是想推卸责任,只是想解释我究竟想转换为 MySQLi 的内容。抱歉,如果人们认为这毫无意义,但我被困住了。谢谢。
【问题讨论】:
-
因为只有三个函数调用,所以编辑起来相当容易。你具体是在哪里绊倒的? (另请注意,为每个查询重复调用数据库连接函数并不是一个聪明的主意。)
-
如果你打算这样做,至少将你的连接注入你的函数。不要为每个查询建立一个连接。而
mysqli_query要求将连接作为第一个参数传递 -
每次使用时,加载时为一页,然后与mysqli_close()关闭连接;完成后,它到达页面/脚本的末尾。它不是一直打开的。
-
旁注:如果您实际使用
mysqli_close();,如图所示,您需要像mysqli_close($con);那样将DB 连接传递给它,同时像$con = mysqli_connect($db_host, $db_user, $db_pass,$db_name)那样分配DB 连接 -mysqli_close()需要DB 连接作为参数传入。 -
对不起。我将它用于 $link 示例。谢谢。
标签: php mysql sql mysqli database-connection