0

我正在为我创建的脚本创建一个安装文件,并且还将提供用于输入数据库详细信息的字段。无论如何,在将这些数据库详细信息存储在 config.php 文件中之前,我想看看它们是否有效。查看提供的详细信息是否有效的最佳方法是什么?我想运行一个虚拟查询,如果成功,则将详细信息存储在文件中。我不知道最好的查询是什么?我对整个事情都使用 PDO。所以,我基本上需要检查数据库连接是否成功才能继续。

您能否告诉我您的想法如何验证用户输入是否一切正常?我的虚拟查询想法是处理这个问题的好方法吗?如果是,我应该运行什么查询?如果没有,你有什么建议?

谢谢。

4

4 回答 4

2

如果您使用的是 sql server,诸如“select 1”之类的东西就可以完成这项工作。我想许多其他数据库引擎也会支持这个查询。

于 2012-11-23T22:32:04.263 回答
1

最好的办法是发出一系列查询/命令,分别测试您需要的每一件事。

  1. 可以打开连接
  2. 数据库在那里/可以创建
  3. 用户可以查看数据/可以构造数据等。

然后,作为安装的一部分,您可以告诉用户是否有问题,并直接指出问题让他们解决。您应该在安装的早期执行此操作,这样您就不必回滚太多。

想想安装体验。安装程序时您想要什么。你愿意说

 "Error. Can't connect", 
 or 
 "Error: Cannot connect to DATABASEX the SERVERY with the USERID_W", 
 or even better 
 "Error: Can connect to the DATABASEX the SERVERY with the USERID_W, but table X is missing, have you completed step ABC first?"

为用户做尽可能多的工作。

于 2012-11-23T22:40:47.653 回答
0

好吧,如果连接函数返回预期值而不产生任何错误/异常,您可以假设连接成功。除此之外...

SHOW TABLES FROM $database;

应该表明他们至少对数据库具有基本权限,但不会表明他们是否可以创建表和插入数据。

于 2012-11-23T22:32:12.353 回答
0

首先,检查PHP是否正确连接到数据库(返回值,mysql错误)。然后您可以使用类似的东西SHOW VARIABLES LIKE "%version%"来确定数据库引擎版本,因此所有功能和方法都将按预期工作。这样,您还可以通知您的用户,他们的数据库版本太旧,无法与您的软件一起使用。

编辑

此外,查询SHOW GRANTS FOR 'user'@'host'是检查已连接用户的权限的好主意

于 2012-11-23T22:44:51.493 回答