php - 将 URL 映射到 MySQL 数据库

标签 php mysql apache

我有兴趣同时提供 hosted and SaaS version of my application .现在,SOers 建议我 map the URLs to MySQL databases .我能想到的是这样的

  1. companya.mysoft.com 将拥有以名称 companya* 开头的 MySQL 数据库。即,compana_mydb
  2. companyb.mysoft.com 将拥有以名称 companyb* 开头的 MySQL 数据库,即 companyb_mydb
  3. 等等。

这样可以更轻松地创建新公司帐户和进行维护。

现在,是否可以在 Apache 配置文件、MySQL ini 和 PHP ini 文件内部调整所有这些设置? (我正在使用 Apache、MySQL 和 PHP)。最好我不更改我的应用程序

编辑: MySQL 不支持 user-specified database-specific directories .更改问题以反射(reflect)这一点。

Edit2:有人建议我编辑 PHP 应用程序以检查子域并选择正确的数据库。但这将意味着调整托管代码以满足 SaaS 版本。 所以基本上我们会有两个代码版本,一个用于托管,另一个用于 SaaS,这不是我想要的。如果一切都通过配置文件完成会更好,这样我就只有一个版本的代码。

最佳答案

如果您正确设置了 PHP 应用程序(可能使用某种类型的 MVC 设计模式或框架),您可以在一个地方指定该请求中所有后续 mysql 函数要使用的数据库名称。然后只需检查请求 header 、获取(并验证)公司/数据库名称前缀,然后在 mysql_select_db 函数中使用它即可。

关于php - 将 URL 映射到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/498057/

相关文章:

javascript - 亚马逊购买需要 2 个用户登录

php - 列出 steam 市场中的元素列表

mysql - 错误 "Cannot add foreign key constraint"而不尝试创建外键

linux - 使用带 apache 的正则表达式重定向

apache - 本地主机上的多个虚拟主机用于开发

PHP MySQLi fatal error : Call to a member function fetch_array() on a non-object in

javascript - 如何根据从第一个下拉列表自动更改的第二个下拉列表更改第二个文本框值?

mysql - 如何处理 MySQL 排名列中的平局

php - SQL 查询未从数据库中找到确切的名称

Apache 反向代理奇怪的超时