Wierd and Annoying error: Call to undefined function mysql_query()
Wierd and Annoying error: Call to undefined function mysql_query()
我已经用了一个多小时了,我可以连接到我的数据库和所有(没有给出任何错误)但是当我尝试使用时出现以下错误
"mysql_query($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()
我从来没有遇到过任何问题,从未见过它。
我在这里提问是因为我在 google 搜索结果中收到了关于上述问题的垃圾邮件;不是我的那个。
如果有人能帮助我,我将不胜感激,我在网上找到的教程显示的代码与我编写的代码完全相同。
答案很简单,此信息有 been available long before the release of PHP 7. It has been removed and they suggest to move over to mysqli or PDO. For a complete list of changes you need to know about for migration see this 指导。
您的选择:
- Adjust your code to mysqli,完全一样,只是有点不同。这不会花很长时间来调整您的代码。
- 切换到 PDO,完全不同但更灵活并且符合我的偏好。
mysql_*
已被删除,这意味着它们可以重新定义。您可以创建引用 MySqli or PDO 的包装函数。
- 切换回 PHP 的版本 6。
为什么删除了它?
- 尚未开发。
mysql_*
函数仅提供 MySQL 真正必须提供的功能的一部分。 (考虑事务、准备好的语句、异步查询等)
- 人们仍在使用这些函数编写(甚至今天)不安全的代码。
我并不是说使用 MySqli 或 PDO 会神奇地阻止 MySQL 注入,但至少它们提供 native 支持以防止此类攻击。剩下的就看你了;程序员,以确保将数据指向需要去的地方。
PHP 7 已经摆脱了 mysql_query()
因为它在很多方面都有问题! API 不鼓励良好实践,官方说法是它没有维护,而且没有准备好的陈述!?!它本质上是 PHP 中最大的问题,它鼓励导致 sql 注入的不良做法,这是一个严重的大问题。
但是,我确实使用遗留代码库,所以在某些情况下我必须处理与您相同的情况。如果你的代码库很小,只需更新你的数据库连接方法。如果您的代码库很大,我建议您这样做:
- 将此代码库的 php 版本回滚到 php 5.6,它将在 2016 年得到更多支持。
- 花点时间更新到 PDO(您可以创建一个
包装 PDO 以使其不那么冗长并且仍然允许准备好的
查询)。
- 忽略我的sql我。如果你从我的sql_* 升级需要 5 分钟,你可能做错了,让自己对 sql-injection 敞开大门。只需使用 PDO 并开始使用准备好的查询,这样您就可以在晚上睡觉了。
- 如果您仍想在更现代的项目中使用 php 7,请使用旧的 php 5.6 遗留代码库启动一个容器实例。
我已经用了一个多小时了,我可以连接到我的数据库和所有(没有给出任何错误)但是当我尝试使用时出现以下错误 "mysql_query($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()
我从来没有遇到过任何问题,从未见过它。
我在这里提问是因为我在 google 搜索结果中收到了关于上述问题的垃圾邮件;不是我的那个。
如果有人能帮助我,我将不胜感激,我在网上找到的教程显示的代码与我编写的代码完全相同。
答案很简单,此信息有 been available long before the release of PHP 7. It has been removed and they suggest to move over to mysqli or PDO. For a complete list of changes you need to know about for migration see this 指导。
您的选择:
- Adjust your code to mysqli,完全一样,只是有点不同。这不会花很长时间来调整您的代码。
- 切换到 PDO,完全不同但更灵活并且符合我的偏好。
mysql_*
已被删除,这意味着它们可以重新定义。您可以创建引用 MySqli or PDO 的包装函数。- 切换回 PHP 的版本 6。
为什么删除了它?
- 尚未开发。
mysql_*
函数仅提供 MySQL 真正必须提供的功能的一部分。 (考虑事务、准备好的语句、异步查询等)- 人们仍在使用这些函数编写(甚至今天)不安全的代码。
我并不是说使用 MySqli 或 PDO 会神奇地阻止 MySQL 注入,但至少它们提供 native 支持以防止此类攻击。剩下的就看你了;程序员,以确保将数据指向需要去的地方。
PHP 7 已经摆脱了 mysql_query()
因为它在很多方面都有问题! API 不鼓励良好实践,官方说法是它没有维护,而且没有准备好的陈述!?!它本质上是 PHP 中最大的问题,它鼓励导致 sql 注入的不良做法,这是一个严重的大问题。
但是,我确实使用遗留代码库,所以在某些情况下我必须处理与您相同的情况。如果你的代码库很小,只需更新你的数据库连接方法。如果您的代码库很大,我建议您这样做:
- 将此代码库的 php 版本回滚到 php 5.6,它将在 2016 年得到更多支持。
- 花点时间更新到 PDO(您可以创建一个 包装 PDO 以使其不那么冗长并且仍然允许准备好的 查询)。
- 忽略我的sql我。如果你从我的sql_* 升级需要 5 分钟,你可能做错了,让自己对 sql-injection 敞开大门。只需使用 PDO 并开始使用准备好的查询,这样您就可以在晚上睡觉了。
- 如果您仍想在更现代的项目中使用 php 7,请使用旧的 php 5.6 遗留代码库启动一个容器实例。