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

时间:2016-01-26 23:15:30

标签: php mysql undefined mysql-connect

我已经在这里待了一个多小时了,我可以连接到我的数据库和所有(不会给出任何错误)但是当我尝试使用时出现以下错误 “的mysql_query($查询);”

Call to undefined function mysql_query()

我已经尝试过启用:

extension=php_mysql.dll
extension=php_mysqli.dll

我添加了:

extension_dir = "ext"
extension=php_mysql.dll

在导入列表的末尾。

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

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

Call to undefined function mysql_connect()

在任何时候我都没有遇到任何问题,从未见过它。

我在这里问它是因为我在谷歌搜索结果上发了垃圾邮件而上面的问题;不是我的那个。

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

phpInfo: top phpInfo: sql

2 个答案:

答案 0 :(得分:6)

PHP 7已经摆脱mysql_query(),因为它在各方面都存在问题! API不鼓励良好的做法,官方的说法是它没有维护,没有准备好的声明!?!它本质上是PHP中最大的问题,它鼓励导致sql注入的不良做法,这是一个重大的糟糕情况。

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

  • 将此代码库的php版本回滚到php 5.6,2016年将支持更多版本。
  • 花点时间更新到PDO(你可以创建一个 在PDO周围包装,以减少冗长,仍然允许准备 查询)。
  • 忽略mysqli。如果从mysql_ *升级需要5分钟,你可能做错了,让自己开放sql-injection。只需去PDO并开始使用准备好的查询,这样你就可以在晚上睡觉了。
  • 如果您仍想在更现代的项目中使用php 7,请使用旧的php 5.6遗留代码库启动容器实例。

答案 1 :(得分:4)

答案很简单,此信息在PHP 7发布之前很久就已been available。它已被删除,他们建议转移到mysqliPDO。有关迁移需要了解的完整变更列表,请参阅this指南。

您的选择:

  • Adjust您的代码mysqli,这有点完全相同。这不需要很长时间就可以将代码调整为。
  • 切换到PDO,完全不同但更灵活,并且有我的偏好。
  • true已被删除,这意味着它们可以重新定义。您可以创建引用MySqliPDO的包装函数。
  • 切换回PHP的第6版。

为什么删除它?

  • 它还没有开发。
  • mysql_*函数只提供了MySQL真正提供的功能。 (考虑事务,预处理语句,异步查询等)
  • 人们仍在使用这些功能编写( 甚至今天 )不安全的代码。

我并不是说使用MySqli或PDO会神奇地阻止MySQL注入,但至少它们提供原生支持来抵御这类攻击。剩下的由你决定;程序员,确保将数据指向需要的位置。