php文件未连接到Azure数据库(应用服务的mySQL-in-app)

时间:2019-04-10 10:57:09

标签: php database-connection azure-sql-database

我正在azure中使用App Service的“ mysql-in-app”。我想使用维护页面添加,删除,编辑和查看数据。我已经为此编写了php代码。我无法连接到mysql数据库。

我已经使用->

在本地数据库中尝试了此方法

$conn = mysqli_connect('127.0.0.1','root','','samdb');

工作正常。

但是我正在尝试使用this->

连接到Azure数据库。
$conn = mysqli_connect('127.0.0.1:50721','azure','6#vWHD_$','localdb'); 

在这里不起作用。

3 个答案:

答案 0 :(得分:0)

首先,您需要获取连接到MySQL的Azure数据库所需的连接信息。您需要完全限定的服务器名称和登录凭据。

enter image description here

使用以下代码通过CREATE TABLE SQL语句连接并创建表。

代码使用PHP中包含的MySQL改进的扩展(mysqli)类。该代码调用方法mysqli_init和mysqli_real_connect连接到MySQL。然后,它调用方法mysqli_query来运行查询。然后调用方法mysqli_close来关闭连接。

用您自己的值替换主机,用户名,密码和db_name参数。

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin@mydemoserver';
$password = 'your_password';
$db_name = 'your_database';

//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

// Run the create table query
if (mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Color` VARCHAR(50) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')) {
printf("Table created\n");
}

//Close the connection
mysqli_close($conn);
?>

答案 1 :(得分:0)

以下是使用MySQL应用程序内的示例代码获取数据库连接字符串并连接到数据库:

$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {
    if (strpos($key, "MYSQLCONNSTR_localdb") !== 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);
}

$link = mysqli_connect($connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword,$connectstr_dbname);

有关更多详细信息,请参见本教程:Announcing MySQL in-app for Web Apps (Windows)

您还可以在Azure protal上获得以下连接字符串: enter image description here

请参阅:Azure Database for MySQL: Use PHP to connect and query data

因此您的代码可能是这样,您可以重试:

$connectstr_dbhost = 'mydemoserver.mysql.database.azure.com';
$connectstr_dbname = 'myadmin@mydemoserver';
$connectstr_dbusername = 'your_password';
$connectstr_dbpassword = 'your_database';

$conn = mysqli_connect($connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword,$connectstr_dbname);

希望这会有所帮助。

答案 2 :(得分:0)

尝试像这样分别指定端口:

$conn = mysqli_connect('127.0.0.1','azure','6#vWHD_$','localdb', '50721');