使用 PHP 和 SQLSRV 的输入和输出格式

Input and output format with PHP and SQLSRV

我有一个相当具体的场景,我正在努力应对。令人沮丧的是它甚至不应该很复杂!

我有一个 SQL 数据库,我正在使用 PHP + SQLSRV 连接到它。数据库结构非常简单,目前有 2 个 varchar 列(本例中为 ColumnA 和 ColumnB)。

我的任务是从此 table 读取数据,允许在表单中编辑值并写回数据库。 这部分很简单,而且一切正常。

现在的挑战是需要将数据库值按以下格式写入我的(当前为空)values.php 文件。

<?php
    $output = array (
        "Val1" => 'aaa',
        "Val2" => 'bbb',
        "Val3" => 'ccc',
    );
?>

理想情况下,我希望在保存到数据库命令时完成此操作,我可以将其作为 AJAX 成功过程的一部分,这样这部分就不会成为问题

我开始进行以下流程;

<?php     
$sql = "SELECT ColumnA, ColumnB FROM Table";
$stmt = sqlsrv_query( $conn2, $sql );

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$test[]= array($row['ColumnA'] ." => '". $row['ColumnB']."',");
$values =  implode(PHP_EOL,$test);

}

$content = '<?php
$output = array ("'.$values.'");
?>';

file_put_contents("c:/jjj/values.php", $content);

?>

这给了我很多 "Array to string conversion" 错误,文件中填充了;

<?php
$output = array ("
Array
Array
);
?>

我哪里错了?

编辑

在下面的各种注释之后,当前代码为;

<?php     
$sql = "SELECT ColumnA, ColumnB FROM Table";
$stmt = sqlsrv_query( $conn2, $sql );
$test = [];
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $test[] = [$row['ColumnA'] => $row['ColumnB']];
}

$content = "<?php" . PHP_EOL;
$content .= "\t" . '$output = [' . PHP_EOL;
foreach($test as $key => $value) {
    $content .= "\t\t\"{$key}\" => \"{$value}\"," . PHP_EOL;
}
$content .= "\t];" . PHP_EOL;
$content .= "?>";

file_put_contents("c:/jjj/values.php", $content);
?>

这导致 3 个数组到字符串的转换错误(每行一个)和一个如下所示的输出文件:

<?php
    $output = [
        "0" => "Array",
        "1" => "Array",
        "2" => "Array",
    ];
?>

我仍然找不到使用 PHP 以正确格式将我的数据库 table 导出到文件的方法。

我认为这会更接近您想要的: 要回显制表符,您也可以在双引号

中使用 \t
$content = "<?php" . PHP_EOL;
$content .= "\t" . '$output = [' . PHP_EOL;
foreach($test as $key => $value) {
    foreach ($value as $subkey => $subvalue) {
        $content .= "\t\t\"{$subkey}\" => \"{$subvalue}\"," . PHP_EOL;
    }
}
$content .= "\t];" . PHP_EOL;
$content .= "?>";