我正在努力解决一个相当具体的情况。令人沮丧的是,它甚至不应该变得复杂!
我有一个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将数据库表导出为正确格式的文件的方法。
答案 0 :(得分:2)
我认为这将更接近您想要的: 要同时回显制表符,您可以在双引号中使用\ t
show(A)