Формат ввода и вывода с PHP и SQLSRV - PullRequest
0 голосов
/ 12 октября 2018

У меня довольно специфический сценарий, с которым я борюсь.Разочарование в том, что это даже не должно быть сложно!

У меня есть база данных 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 голосов
/ 12 октября 2018

Я думаю, это приблизится к тому, что вы хотите: чтобы отображать вкладки, вы можете использовать \ 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 .= "?>";
...