如何对mysqli做mysql [重复]

Posted

技术标签:

【中文标题】如何对mysqli做mysql [重复]【英文标题】:how to do mysql to mysqli [duplicate] 【发布时间】:2017-02-09 20:20:11 【问题描述】:

不是针对特定查询,而是由于 php 7 的出现,所有软件查询都从 mysql 转换为 mysqli。这是一种非常古老的编码,因此有很多这样的情况。一段字符串或语法是 mysql_query($query, $link); 被转换为 mysqli_query($link, $query); $link1, $link2 可以用于不同的数据库连接。

【问题讨论】:

你在哪里声明了$link1$link2?最好在某个配置文件中指定$link 并将其包含在每个页面中 【参考方案1】:

使用regular expressions。我没有检查我的表达式是否像宣传的那样工作,并且正则表达式语法因您使用的工具而异。但总的来说它应该这样工作:

搜索mysql_query\(("[^"]*"), *(\$[a-zA-Z0-9_]+)\) 替换为mysqli_query($2, $1)

例如,在 Eclipse IDE 中,使用“搜索/文件...”,勾选“正则表达式”复选框,指定“*.php”作为文件名模式并在“包含文本”下输入:

mysql_query\(("[^"]*"), *(\$[a-zA-Z0-9_]+)\)

然后点击“替换...”按钮并在“使用”下输入:

mysqli_query($1, $2)

点击预览查看结果。如果操作正确,这可以在几秒钟内更新数百个文件。记得在之后测试你的代码。

【讨论】:

我已经对其进行了测试,并且可以正常工作。这将节省我宝贵的时间,阿克塞尔!感谢您的解决方案。 Axel,如果查询类似于mysqli_query("select field1, field2 from table where row1 = '".$var1."' and row2 = '".$var2."' limit 1", $linkx)。如何挑选和交换它们?【参考方案2】:

一个肮脏的解决方案:

首先,删除你的mysql 扩展,这样mysql_query 之类的函数就不会被定义。

其次,写这样的函数:

function mysql_query($q, $l)
    mysqli_query($l, $q);

我的意思是,重写所有的mysql函数来调用mysqli。

那么它可能工作得很好。

当然,如果您的代码使用了这么多mysql 功能,那么这可能无法正常工作。祝你好运!

【讨论】:

哦,该死的,我喜欢你。 @EdvinTenovimas 谢谢。如果你喜欢它,那么你可以给我一个upvote。谢谢:) @EdvinTenovimas 感谢您的赞赏 :) 很好,但我需要替换代码以节省时间。在您的解决方案中,我必须编写函数,然后必须为每个查询编写代码以单独调用该函数。【参考方案3】:

由于某些原因,@Axel 的解决方案不适用于我的 Eclipse 版本。

替换代码:

mysql_query($1, $2)

我已经使用了这个正则表达式搜索并且它有效:

mysql_query\((\$.*), (\$.*)\) 

替换为:

mysqli_query($2, $1)

【讨论】:

以上是关于如何对mysqli做mysql [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 MySQL 错误参数?

从 MYSQL 更新到 MYSQLI [重复]

使用mysqli转义字符串转义数组[重复]

如何在php echo中执行mysql查询? [重复]

PHP从mysql *迁移到mysqli [重复]

如何将我的网站从 mysql 迁移到 mysqli? [复制]