PHP连接到Azure MySQL但无法访问表

时间:2017-07-02 20:57:02

标签: php mysql azure

我在PHPmyAdmin中创建了一个名为" people"有4列,并填充2行数据。我在一个名为" db.php"的文件中使用了Azure的文档中的这段代码。连接到数据库。

db.php中:

$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);

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

它成功地回应了Success: A proper connection to MySQL was made!...

现在,按照youtube教程,我试图传递我的表的数据并使用这段代码将其转换为json格式:

fetch.php:

include_once('db.php');

$query = "SELECT * FROM `people`";

$res = mysqli_query($link,$query);

if($res !== FALSE)
{
    echo "table found";
}
else
{
    echo "table not found";
}

$result = array();

while( $row = mysql_fetch_array($res) )
    array_push($result, array(  'id' => $row[0],
                                'firstname'  => $row[1],
                                'lastname' => $row[2],
                                'address' => $row[3]));

echo json_encode(array("result" => $result));

但这只是回应了table not found

我对SQL和PHP都很陌生。知道什么是错的吗?

2 个答案:

答案 0 :(得分:1)

从您的代码判断,看起来您正在使用Azure MySQL In App。默认情况下,Azure在运行时环境通过MYSQLCONNSTR_localdb变量注入数据库连接信息。它注入变量的数据库名称命名为:localdb

所以我想知道你在哪个数据库中创建了people表?如果您已将people表放入其他数据库,如下面的屏幕截图:
enter image description here

然后,fetch.php文件中的代码将回显table not found;如果你把表放在localdb数据库中,那么它将回显`table found';

您可以通过Azure门户添加phpMyAdmin扩展,如下面的屏幕截图所示:

enter image description here

然后,您可以通过网址https://{YOUR WEB APP’S NAME}.scm.azurewebsites.net/phpmyadmin/查看数据库内容,以进入工作台。

此外,您可以参考this link了解有关MySQL应用内如何为Web Apps工作的更多详细信息。

答案 1 :(得分:0)

原来我正在混合使用MySQL和MySQLi。最后一个代码块(将表转换为JSON)使用的是MySQL。我改变了这个并让它发挥作用。