使用 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 .= "?>";
我有一个相当具体的场景,我正在努力应对。令人沮丧的是它甚至不应该很复杂!
我有一个 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 .= "?>";