当前位置: 首页 > 知识库问答 >
问题:

PHP interafce mysql()不工作,但mysqli()工作;为什么?

孟选
2023-03-14

简介:在转储/恢复后,无法再从web应用程序连接到MariaDB。在Mariadb中处理PHP、mysql()和mysqli()接口的方式似乎有些不同。

MacOS X 10.6.8(雪豹)上的MariaDB 10.1.8,以及PHP 5.3.8和Apache 2.2.24。

由于磁盘驱动器出现故障,我遇到了“数据库崩溃”的情况,一些InnoDB表无法访问,最后导致服务器崩溃。我按照服务器错误日志条目指向的web页面中的说明,使用“mysqld--innoDB_force_recovery=2”使它以只读方式运行(级别1仍然崩溃,我不敢尝试级别3。)

但我无法通过我托管的任何网站进入数据库,包括几个版本的MediaWiki和几个国产图像库的实例。它在mysql_connect()中失败,登录凭据是通过mysql CLI工作的。但是phpMyAdmin可以使用相同的登录凭据!

所以我爬过了phpMyAdmern代码,发现它使用的是mysqli(),而坏掉的web应用程序似乎使用的是mysql()。phpMyAdmin有一个配置变量来控制这一点;我把它从“mysqli”改为“mysql”,结果它坏了。把它改回“mysqli”,它又能工作了。

我没有改变任何PHP代码。我没有更改任何apache设置。我没有更改/etc/my.cnf。我没有更改/etc/php.ini。我没有更改任何登录凭据。唯一改变的是所有数据库的转储、重新初始化和还原。

(是的,我知道mysql()是不推荐的,但我确实把“PHP 5.3.8”放在前面。感谢所有没有回答这个问题的人,他们指出不应该在新的开发中使用不推荐的代码。现在如果你这么聪明,让我们试着回答这个问题吧!我有遗留代码要维护!)

共有1个答案

姬英武
2023-03-14

在本例中,它是套接字位置。

虽然我提到了在/etc/php.ini中放置正确的套接字位置,但phpinfo()中的其他内容引起了我的注意:“扫描此dir以获得其他.ini文件:/usr/local/php5/php.d”。这显然是在读取主/etc/php.ini文件之后完成的。啊。

所以我进入了那里,果然,那里有一个文件将mysql(但不是mysqli)的套接字设置到了错误的位置。双-呃。

 类似资料:
  • 我对MySQLi的PHP bind_param函数有一个相当奇怪的问题。 我用?创建查询,参数将绑定到哪里,我准备语句,绑定参数,然后执行语句。由于某些原因,它没有绑定参数。该系统是一个原型招聘软件,用于更新注册申请人的详细信息。 代码如下: 任何帮助都非常感谢! 谢谢!

  • 我必须向MySQL数据库发送一个INSERT查询,假设所有变量都设置正确,我使用以下代码: 变量被正确设置为result,正如我在使用时看到的那样,但现在在数据库中插入了行。 奇怪的是,如果调用MySQL错误日志,可以清楚地看到insert被正确地发送到数据库,如下所示: 但它没有出现在表格中。 有什么建议吗?谢谢

  • 当我调用下面的代码时,我总是得到 用户的值。Id和密码有效。结果错误总是说“无效令牌”,我没有尽可能地看到它,因为我得到它并立即检查它和它的错误。这只是一个理智测试——我通常通过电子邮件向用户发送令牌,但这也不起作用。 UPDATE 1我在同一个控制器中定义UserManager,如下所示: UPDATE 2这是我的Application ationUserManager代码:

  • 我试图通过在命令提示符上放置以下行来调用一个可执行文件。(我知道我可以直接调用exe,但我们只能说,由于某些限制,我没有其他方法可以这样做) 给我错误 知道为什么吗?我该如何解决这个问题呢?我必须使用cmd.exe的完整路径。

  • 我在多模块maven项目中遇到以下问题: 该项目最初是在Eclipse中创建的,可以在那里编译和运行。它也可以用构建。 现在,当我使用以下导入选项将项目导入Intellij时,将识别父pom.xml,并导入项目及其模块。 一切看起来都很好,但是当我试图编译它时,一个类,它有一个来自另一个模块的类作为依赖项,找不到。 我尝试了很多解决方案,唯一对我有效的是过时的maven idea插件。现在,每当任

  • 我只是按照spring的指示将响应发送回特定用户,而不是广播消息。但最终,无法发送回响应消息。 这是我的js代码: 这是控制器: 这是Spring配置: 请帮忙。谢谢提前。 我已经尝试使用@SendToUser,@SendToUser(/队列/resp)和SimpMessagingTem板以及,完全不能响应消息到浏览器。