我已经使用PHP在我们自己的服务器上多次访问MySQL数据库,并始终使用相同的PHP脚本来执行此操作(显然会更改登录详细信息)。不过这是我第一次使用Heroku& ClearDB和我遇到了问题。
数据库在我们的使用ClearDB的Heroku PHP应用程序上,并且我访问了CLEARDB_DATABASE_URL以查找用户名,密码,主机名和数据库名称。只是为了确保我做得正确,我的理解是这是格式:
mysql://USER_NAME:PASSWORD@HOST_NAME/DATABASE_NAME?reconnect=true在MySQL Workbench中使用这些细节,我设法登录到数据库并添加一个表,所以我相信它们是正确的细节。
但是,当我尝试使用我的PHP脚本访问它时,使用从URL获取的相同变量,我得到以下错误:
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.起初我以为Heroku应用程序可能已经完成了,但我仍然可以访问PHP脚本中不会尝试访问数据库的任何函数。
正如我所说,这个脚本一直在工作,所以我不确定问题出在哪里。
我的数据库连接与以下构造函数在一个单独的类中:
function __construct()
{
$this->DB_HOST = 'us-cdbr-east-02.cleardb.com';
$this->DB_USERNAME = 'the_username_from_url';
$this->DB_PASSWORD = 'the_password_from_url';
$this->DB_DATABASE = 'the_database_name_from_url';
}带有一个connect()函数,该函数根据其他类的需要调用:
function connect()
{
self::$instance = new mysqli($this->DB_HOST, $this->DB_USERNAME, $this->DB_PASSWORD, $this->DB_DATABASE);
if (mysqli_connect_errno()) {
$this->raise_error(printf("Connect failed: %s\n", mysqli_connect_error()));
}
return self::$instance;
}我99.9%肯定这个问题是由于尝试连接到数据库造成的。尽管当我在浏览器中测试脚本时,它不会返回任何PHP错误消息,但它只是导致500错误的基于DB的函数。
我愿意接受任何建议......