Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP连接到Azure MySQL,但可以';t访问表_Php_Mysql_Azure - Fatal编程技术网

PHP连接到Azure MySQL,但可以';t访问表

PHP连接到Azure MySQL,但可以';t访问表,php,mysql,azure,Php,Mysql,Azure,我已经在PHPmyAdmin中创建了一个名为“people”的表,它有4列,并用2行数据填充。我使用Azure文档中名为“db.php”的文件中的这段代码连接到数据库 db.php: $connectstr_dbhost = ''; $connectstr_dbname = ''; $connectstr_dbusername = ''; $connectstr_dbpassword = ''; foreach ($_SERVER as $key => $value) { if

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

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;
它成功地呼应了
成功:与MySQL建立了正确的连接

现在,在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));
但这只是回显未找到的


我对SQL和PHP都是新手。你知道怎么回事吗?

从你的代码判断,看起来你正在使用Azure MySQL In应用程序。默认情况下,Azure在运行时环境中通过
MYSQLCONNSTR\u localdb
变量注入数据库连接信息。它注入变量的数据库名为:
localdb

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

然后
fetch.php
文件中的代码将回显
未找到的表
;如果您将该表放在
localdb
数据库中,那么它将回显'table found'

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

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


此外,关于MySQL in-app如何在Web应用程序中工作的更多细节,您可以参考。

原来我是在混合使用MySQL和MySQLi。最后一个代码块(将表转换为JSON)使用的是MySQL。我更改了此项并使其正常工作。

您填写凭证了吗?@PseudoAj什么凭证?我如何找到它们以及在哪里输入它们?但是,在连接过程中是否也不需要它们呢?
db.php
包含
$connectstr\u dbhost=''
您需要在这里输入主机凭据。@PseudoAj我想这就是
foreach
-语句的要点。因为在我在代码末尾回显了
$connectstr_dbhost
之后,它会输出“localdb”,这正是我试图访问的数据库。您的意思是该变量应该包含多个字符串吗?是的,该表位于localdb中,我确信php文件已连接到该数据库:。我不确定添加扩展会给功能增加什么,因为在启用“Azure MySQL In APP”并重新启动应用程序后,我已经能够访问
https://{YOUR WEB APP'S NAME}.scm.azurewebsites.net/phpmyadmin/