Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ODBC:何时是创建数据库的最佳时间?_Php_Mysql_Delphi_Odbc - Fatal编程技术网

Php ODBC:何时是创建数据库的最佳时间?

Php ODBC:何时是创建数据库的最佳时间?,php,mysql,delphi,odbc,Php,Mysql,Delphi,Odbc,我有一个windows程序,可以生成PGP表单,稍后将填写这些表单 这些PHP表单将填充数据库。它看起来很像MySql,但我不能确定,所以我们称它为ODBC 而且,是的,它必须是一个windows程序 还有一些PHP表单可以查询数据库-检查它包含哪些表和字段,然后生成可用于搜索数据库的表单(例如,它找到一个包含字段“employee_name”的表,等等,并生成一个表单,允许您根据员工姓名进行搜索 让我们称之为设计时和运行时 在设计时,一些管理人员或IT人员或类似人员开始定义数据库的性质,并在

我有一个windows程序,可以生成PGP表单,稍后将填写这些表单

这些PHP表单将填充数据库。它看起来很像MySql,但我不能确定,所以我们称它为ODBC

而且,是的,它必须是一个windows程序

还有一些PHP表单可以查询数据库-检查它包含哪些表和字段,然后生成可用于搜索数据库的表单(例如,它找到一个包含字段“employee_name”的表,等等,并生成一个表单,允许您根据员工姓名进行搜索


让我们称之为设计时和运行时

在设计时,一些管理人员或IT人员或类似人员开始定义数据库的性质,并在运行时1)工作人员每天填写表单,2)管理人员可以提取报告

我的问题是:假设数据库是在“设计时”定义的(并在运行时填充),那么在哪里以及如何最好地这样做

我可以从windows程序中使用ODBC接口,但我很难找到与Delphi一起使用的好方法。像ADO和firebird这样的东西往往期望您已经拥有一个数据库并允许您操作它,但我找不到如何创建数据库和一些表的代码示例,所以…
2我可以在我的windows程序中使用Delphi中的DOS命令。我刚刚尝试并得到了对MySql--version的响应,但不确定MySql等是否更具交互性。也就是说,我可以使用带有分号和分隔返回的脚本文件或非常长的
stacked
命令吗?e、 g’创建数据库数据库;创建表t1;'
3) 由于使用数据库的最佳方式似乎是PHP,也许我的windows程序可以弹出一个PHP页面,当在浏览器中运行时,该页面将创建数据库


我已经尽力使这件事尽可能简单,但请随时提问。可能有几种有效的方法,但就易于实现或维护而言,可能有一种“更好”的解决方案



更好的抓取选项3。如果用户以后想回来让windows程序更改输入表单怎么办?它还需要更新数据库。

创建数据库通常是数据库管理员的任务。除非它是一个本地数据库,可能是一个嵌入式数据库,否则用户需要知道在远程服务器上在哪里以及如何创建数据库,而她可能对此一无所知。在哪里存储数据库文件?哪些磁盘可用?此外,还可以设置更多的参数(记忆缓冲区大小等)、创建用户等等。此外,您还需要非常高的权限才能创建数据库,而不是授予普通用户或应用程序的权限。
因此,通常您会要求数据库管理员创建您的数据库/模式,他会为您提供连接所需的凭据,然后您的应用程序(或其设置)将创建并初始化所需的对象(表等)。创建表(和其他对象)通常与运行“CREATETABLE…”语句一样简单。请记住,SQL只接受一个命令,如果您需要运行多个命令,您必须自己一个接一个地发送它们,尽管有Delphi组件可以将脚本拆分为命令并一个接一个地运行。

因为处理数据库的最佳方法似乎是PHP—您从哪里得到的?php与mysql配合使用效果很好,因为LAMP/WAMP架构被大量使用,但并不一定比任何其他解决方案都好。好的,我不再重复这句话。对不起,尽管我同意你所描述的可能是正常的,但这不是这个项目的情况。“管理人员”将使用windows程序生成用于每日报告(比如销售报告)的表单,非技术用户将在浏览器中填写这些表单。这意味着windows程序将定义数据库、设置权限和密码等。在这方面我没有任何选择。没有必要在程序每次生成表单和用户填写表单时“定义数据库”。您必须定义一组表来存储表单元数据和数据。应用程序用户也是如此。数据库通常不是设计成非常动态的结构,而是用来处理动态数据的。+1我会给你答案,因为没有其他人对此感兴趣。然而。。。“每次程序生成表单并由用户填写时,无需“定义数据库”。我显然解释得不好。。。“每次程序生成表单”都是“设计时”,可能只有一次(如果他们第一次正确的话),但“和用户填充表单”是“运行时”,至少每天都应该如此。“数据库通常不是设计成非常动态的结构”。同意,我只是想知道如果客户决定重命名一个字段或添加/删除一个字段,我该怎么办…有两种方法:最简单的方法是创建从对象到数据库对象的1:1映射(即表单是表,表单字段是表字段)。这样,每当用户希望更改表单结构时,就必须发出DDL命令(创建/更改表等)。或者,您可以设计一组表来存储表单元数据和数据(即“表单”、“表单字段”、“表单字段数据”等),然后只更改这些表中的记录(DML命令…),而不更改表结构。虽然它需要更多的代码,但非常灵活。