【问题标题】:php file not connecting to azure database(mySQL-in-app of app service)php 文件未连接到 azure 数据库(应用服务的 mySQL-in-app)
【发布时间】:2019-04-10 10:57:09
【问题描述】:

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

我已经使用 ->

在本地尝试了本地数据库

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

它工作正常。

但我正在尝试使用此连接到 azure db->

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

这里它不起作用。,

【问题讨论】:

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


    【解决方案1】:

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

    使用以下代码通过 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);
    ?>
    

    【讨论】:

      【解决方案2】:

      下面是一个示例代码,使用 MySQL in-app 获取数据库连接字符串并连接到数据库:

      $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 上获取这些连接字符串:

      请看: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);
      

      希望这会有所帮助。

      【讨论】:

      • 这和我问的不一样。我通过在应用服务中使用扩展将 phpMyAdmin 添加到应用服务。我没有为mysql使用单独的服务。
      【解决方案3】:

      尝试像这样单独指定端口:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-19
        • 1970-01-01
        • 2021-03-31
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多