У меня довольно специфический сценарий, с которым я борюсь.Разочарование в том, что это даже не должно быть сложно!
У меня есть база данных 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.