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

时间:2018-10-12 09:54:31

标签: php sqlsrv

我正在努力解决一个相当具体的情况。令人沮丧的是,它甚至不应该变得复杂!

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

我的任务是从该表中读取数据,允许以表格形式编辑值并写回数据库。 这部分很容易并且可以正常工作。

现在的挑战是数据库值需要以以下格式写入我的(当前为空)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);

?>

这给了我很多“数组到字符串转换”的错误,并且文件填充了

<?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将数据库表导出为正确格式的文件的方法。

1 个答案:

答案 0 :(得分:2)

我认为这将更接近您想要的: 要同时回显制表符,您可以在双引号中使用\ t

show(A)