gpt4 book ai didi

PHP mysql 到 mysqli 的迁移问题(自定义函数、程序样式)

转载 作者:可可西里 更新时间:2023-11-01 08:44:47 25 4
gpt4 key购买 nike

早上好

我计划将我从 mysql 扩展创建的整个应用程序迁移到 mysqli,因为下一个 PHP 版本将不再支持 mysql,我不想在最后几分钟犯傻。

目前所有页面都有 2 个主要内容:1)包含数据库连接数据的dbdata.inc.php2) function.inc.php 包含最常用的函数

我也想使用 mysqli 扩展来保持程序风格,但我读到所有 mysqli 函数都必须接收连接链接作为参数。

我正在寻求关于迁移的最佳方式(即最轻松的解决方案)的建议,而不会发疯并且不会彻底重写我所有的 php 页面。

dbdata.inc.php的实际内容:

$yare_db = mysql_connect($yaredb_host,$yaredb_user,$yaredb_pass) or die("some error warning<br>"); 
mysql_select_db($yaredb_conn);
mysql_query("SET NAMES 'utf8'");

在 functions.inc.php 中定义的最常用函数:

function YQUERY($query) {
$res = mysql_query($query) or die(mysql_error());
return $res;
}

function FETCHA($res) {
$rs = mysql_fetch_array($res);
return $rs;
}

function NUMROWS($res) {
$num = mysql_num_rows($res);
return $num;
}

function AFFROWS() {
$num = mysql_affected_rows();
return $num;
}

/* an important function filtering user input texts before passing them to queries */

function msg_safe($string) {
// some regex and \n to "<br>" substitutions...
$string = mysql_real_escape($string);
return $string;
}

那么,现在的问题是如何迁移:

1) 我应该将数据库连接作为函数参数传递吗? IE。像这样的东西:

function YQUERY($link,$query) {
$res = mysqli_query($link,$query);
return $res;
}

?

2) 我是否应该在函数内部将数据库连接(在页面开始时定义到包含的 dbdata.inc.php 中)定义为 GLOBAL 变量? IE。像这样的东西:

function YQUERY($query) {
global $link;
$res = mysqli_query($link,$query);
return $res;
}

?

3) 我是否应该(听起来很棒)在任何自定义函数中显式声明一个新连接? IE。像这样的东西:

function YQUERY($query) {
$link = mysqli_connect("host","user","pass","db") or die("Error " . mysqli_error($link));
$res = mysqli_query($link,$query);
return $res;
}

?

4) 其他建议?

提前致谢

最佳答案

如果您的应用程序中没有那么多连接,那么 GLOBAL $link 选项是最好的。如果你有这么多连接,我认为你必须做一个打开连接的功能,以及关闭连接的其他功能,当你在数据库中做某事时打开连接,做你需要做的所有事情,然后关闭连接。

关于PHP mysql 到 mysqli 的迁移问题(自定义函数、程序样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com