• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapis wyniku z shell_exec do bazy danych

0 głosów
334 wizyt
pytanie zadane 13 czerwca 2022 w PHP przez dee Początkujący (360 p.)

Witam mam problem z PHP :
mam taki zapis:

<?php
$output = shell_exec('ls /home/user');
echo "<pre>$output</pre>";
?>

 

działa wyświetla listę w plików w katalogu.

<pre>

plik1

plik2

plik3

plik4

</pre>

Potrzebuje ten wynik zapisać do bazy danych jako oddzielne wpisy:

id     plik  

1      plik1
2      plik2
3      plik3
4      plik4
 

Chciałbym was poprosić o podpowiedz w jaki sposób mogę to zrobić 

komentarz 13 czerwca 2022 przez adrian17 Mentor (355,240 p.)
OK, a czemu używasz komendę shellową zamiast https://www.php.net/manual/en/function.scandir.php , który od razu da Ci tablicę nazw plików? :)
komentarz 13 czerwca 2022 przez dee Początkujący (360 p.)
przeniesione 13 czerwca 2022 przez Comandeer
Bo to tylko jedno z poleceń które będzie przyjmowała funkcja na przykład lista zalogowanych użytkowników czy historia basha

2 odpowiedzi

+1 głos
odpowiedź 13 czerwca 2022 przez VBService Ekspert (256,660 p.)
edycja 14 czerwca 2022 przez VBService

Zakładam, że przedstawiając taki zapis

<pre>

plik1

plik2

plik3

plik4

</pre>

domyślnie, tekst plik1 jest oddzielony od plik2 znakiem końca linii \n więc możesz np. zastosować Insert Multiple Rows 

 

przykład (zakładam, że kolumnę ID masz AUTO_INCREMENT w bazie danych dla tej tabeli)

<?php

  // zakładam, że shell_exec('ls /home/user') zwraca taki wynik
  $output = 'plik1\nplik2\nplik3\nplik4\n';
  //echo "<pre>$output</pre>";
  
  $values = join(' , ', array_map(function($v) { return "('".$v."')"; }, explode('\n', trim($output, '\n\r\x0B'))));
  $sql = 'INSERT INTO nazwa_tabeli (nazwa_kolumny) VALUES '.$values;

  /*  lub
  $values = join(' , ', array_map(function($v) { return "('$v')"; }, explode('\n', trim($output, '\n\r\x0B'))));
  $sql = "INSERT INTO nazwa_tabeli (nazwa_kolumny) VALUES $values";
  */
  
  echo $sql;

?>

 

1
komentarz 19 czerwca 2022 przez dee Początkujący (360 p.)
Właśnie o to chodziło. bardzo dziękuje za odpowiedz
0 głosów
odpowiedź 13 czerwca 2022 przez AnimaVillis Stary wyjadacz (14,030 p.)
Możesz spróbować zrobić sobie połączenie z bazą danych, sprawdzić czy dana komenda została wykonana następnie foreach dodać każdy wyniki do bazy danych.

Podobne pytania

0 głosów
1 odpowiedź 411 wizyt
pytanie zadane 30 stycznia 2022 w PHP przez trixter310 Obywatel (1,440 p.)
+1 głos
1 odpowiedź 1,785 wizyt
pytanie zadane 6 września 2015 w PHP przez tytanik2011 Użytkownik (930 p.)
0 głosów
1 odpowiedź 2,050 wizyt
pytanie zadane 15 grudnia 2016 w SQL, bazy danych przez bartek7910 Obywatel (1,980 p.)

93,772 zapytań

142,730 odpowiedzi

323,382 komentarzy

63,369 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...