关于php:Wierd和Annoying错误:调用未定义的函数mysql_query()

Wierd and Annoying error: Call to undefined function mysql_query()

本问题已经有最佳答案,请猛点这里访问。

我已经在这里一个多小时了,我可以连接到我的数据库和所有(不给出任何错误),但当我尝试使用"mysql_query($query);"

1
Call to undefined function mysql_query()

我已经尝试启用:

1
2
extension=php_mysql.dll
extension=php_mysqli.dll

我补充说:

1
2
extension_dir ="ext"
extension=php_mysql.dll

在导入列表的末尾。

在我所做的每一个更改之间,我重新启动exampp中的所有进程,并且在我单独尝试的每一个解决方案之后,它仍然会产生这个恼人的错误。

我试过在网上查找,但唯一与我类似的错误是:

1
Call to undefined function mysql_connect()

我从来没有遇到过什么问题,从来没有见过。

我之所以在这里问这个问题,是因为我在谷歌搜索结果中遇到了上述问题,而不是我遇到的问题。

如果有人能帮助我,我会很高兴的。我在网上找到的教程显示了与我写的代码完全相同的代码。

phpInfo: topphpInfo: sql


php 7已经摆脱了mysql_query(),因为它在很多方面都有问题!API不鼓励良好的实践,官方的说法是它是未维护的,没有准备好的声明!?!从本质上讲,这是PHP中最大的问题,它鼓励了导致SQL注入的坏做法,这是一个严重的坏情况。

但是,我确实使用遗留代码库,因此在某些情况下,我必须处理与您相同的情况。如果你有一个小的代码库,只需更新你的数据库连接方法。如果您有一个大的代码库,下面是我的建议:

  • 将这个代码库的PHP版本回滚到php 5.6,在2016年它将得到更多的支持。
  • 花点时间更新到PDO(您可以创建一个将PDO包装起来,使其不那么冗长,并且仍然允许准备查询)。
  • 忽略mysqli。如果从MySQL_u*升级需要5分钟,那么您可能做错了,并将自己留给了SQL注入。只需进行PDO并开始使用准备好的查询,这样您就可以在晚上睡觉了。
  • 如果您仍然想在更现代的项目中使用PHP7,请使用旧的PHP5.6遗留代码构建一个容器实例。

答案很简单,这个信息早在PHP7发布之前就已经存在了。它已经被移除,他们建议转移到mysqli或pdo。有关迁移所需了解的更改的完整列表,请参阅本指南。

你的选择:

  • 将代码调整为mysqli,这是完全相同的,只是有点不同。这不会花很长时间将代码调整为。
  • 切换到PDO,完全不同,但更灵活,有我的偏好。
  • mysql_*已经被删除,这意味着它们可以被重新定义。您可以创建引用mysqli或pdo的包装函数。
  • 切换回PHP版本6。

为什么要移除?

  • 它没有在开发中。
  • mysql_*函数只提供了MySQL真正提供的一部分功能。(考虑事务、准备好的语句、异步查询等)
  • 人们仍然在用这些函数编写(甚至今天)不安全的代码。

我不是说使用mysql i或pdo可以神奇地防止mysql注入,但至少它们提供了针对这些攻击的本地支持。剩下的由你自己决定;程序员,以确保把数据指向它需要去的地方。