Сохранить результаты запроса как json в текстовый файл на сетевом диске - PullRequest
0 голосов
/ 05 марта 2020

Я могу сохранить результаты как JSON. У меня проблема с сохранением на сетевом диске.

Я подтвердил правильность пути, используя следующее:

if ($handle = opendir('//network/IS/folder1/folder2/targetdirectory')) 
{
  echo "Directory handle: $handle\n";
  echo "Entries:\n";

  // This is the correct way to loop over the directory. 
  while (false !== ($entry = readdir($handle))) {
    echo "$entry\n";
  }

  // This is the WRONG way to loop over the directory. 
  while ($entry = readdir($handle)) {
    echo "$entry\n";
  }

  closedir($handle);
}

Используя вышеизложенное, я вижу все файлы в целевой директории. Поэтому я знаю, что путь хорош. Это запись / создание текстового файла, который должен быть сохранен в targettdirectory.

Весь процесс выглядит следующим образом:

<?php
  include("../include/sessions.php");

  if(isset($_POST['selectedOption']))
  {
    $svc1 = mysqli_real_escape_string($dbc, $_POST['selectedOption']);

    $sql = "SELECT column1, column2, column3 FROM table WHERE column1 = '$svc1'";

    $query = mysqli_query($dbc, $sql);

    if($query)
    {
      $out = array(); 
      while($row = $query->fetch_assoc())
      {
        $out[] = $row;
      }
      $json = json_encode($out);  // I can change $json to echo and see the $out in the console as json

      $file = fopen(__DIR__ . "//network/IS/folder1/folder2/targetdirectory", 'w');
      fwrite($file, $json);
      fclose($file);
    }
    else
    {
      echo "Error: " . mysqli_error($dbc);
    }
?>

Используя вышеописанный процесс, ничего не сохраняется в targettdirectory .

Что я могу сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 05 марта 2020

Я решил свою проблему, удалив DIR и добавив имя файла в конце пути:

$file = fopen("//network/IS/folder1/folder2/targetdirectory/newFile.txt", 'w');
fwrite($file, $json);
fclose($file);

Команда PHP file_put_contents, хотя и удалось создать файл, только продолжал добавлять в тот же файл. Использование вышеуказанного перезапишет целевой файл в каталоге targettd.

...