我正在将 Azure 用于与 MySQL 数据库耦合的 PHP Web 应用程序。我们想尝试使用 MySQL 应用内选项来存储我们的数据。但是,我在从 PHP 代码连接到数据库时遇到困难。 The blog post Microsoft 用于连接 MySQL 数据库的方法似乎对我不起作用。
博客中写了一段代码,通过解析环境变量来定义一些全局常量。然而,这个环境变量似乎只有一个空值,而不是要连接的完整参数字符串,即“Database=localdb;Data Source=127.0.0.1:49782;User Id=azure;Password=password”。 我可以手动将此信息填充到我的代码中以尝试连接,但这并不可靠,因为源端口可能会更改。
所以我真正的问题在于“MYSQLCONNSTR_localdb”环境变量没有正确的值,即使在遵循博客文章中的所有步骤之后也是如此。我在这里缺少什么?
提前谢谢您!
我用于测试的代码:
<?php
// From the blog-post
$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';
foreach ($_SERVER as $key => $value)
{
if (strpos($key, "MYSQLCONNSTR_") !== 0)
{
continue;
}
$connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
$connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
$connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
$connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
echo $value;
}
define('DB_NAME', $connectstr_dbname);
define('DB_USER', $connectstr_dbusername);
define('DB_PASSWORD', $connectstr_dbpassword);
define('DB_HOST', $connectstr_dbhost);
// Custom testing
echo $connectstr_dbname."\n";
echo $connectstr_dbusername."\n";
echo $connectstr_dbpassword."\n";
echo $connectstr_dbhost."\n";
$dbConnection = $dbLink = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($dbConnection)
{
echo "Successfully connected to the database.\n";
}
else
{
echo "Failed to connect to the database.\n";
}
?>
编辑:更新了代码并删除了由格式错误的 if 语句引起的部分问题,感谢@Aaron Chen - MSFT
最佳答案
您在 if
中犯了一个错误陈述。
if (!$dbConnection)
{
echo "Successfully connected to the database.\n";
}
else
{
echo "Failed to connect to the database.\n";
}
在此代码中,如果与 MySQL 建立了正确的连接,它将显示 echo "Failed to connect to the database.\n"
.
请改用以下内容:
if (!$dbConnection)
{
echo "Failed to connect to the database.\n";
}
else
{
echo "Successfully connected to the database.\n";
}
当我更换\n
时与 <br>
,我得到以下信息:
这里返回 phpinfo()
.
关于php - Azure PHP MySQL 应用内 - 无法从 PHP 连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349622/