php - Azure PHP MySQL 应用内 - 无法从 PHP 连接到 MySQL

标签 php mysql azure

我正在将 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> ,我得到以下信息:

enter image description here

这里返回 phpinfo() .

enter image description here

关于php - Azure PHP MySQL 应用内 - 无法从 PHP 连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349622/

相关文章:

c# - 如何安全地实现从Windows服务到公共(public)WebApi的 Multi-Tenancy 访问

Azure VM 阻止来自特定 IP 的页面请求

c# - Xamarin iOS RegisteredForRemoteNotifications 间歇性不调用 Android 100% 的时间工作

php - 获取每条记录中所有行的总和

php - Laravel 5.1 - 一般错误 : 1005 Can't create table (mysql)

php - 表存在,但所有属性都丢失

php - 将购物车和用户数据插入订单系统的 mysql

mysql - 按字段的月份选择

php - Laravel-8 中 Auth::onceUsingID() 和 Auth::setUser() 有什么区别

php - 当客户添加票证时,我想向该部门的所有员工发送邮件