• 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
275 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 (354,880 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,600 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 (13,630 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ź 351 wizyt
pytanie zadane 30 stycznia 2022 w PHP przez trixter310 Obywatel (1,440 p.)
+1 głos
1 odpowiedź 1,728 wizyt
pytanie zadane 6 września 2015 w PHP przez tytanik2011 Użytkownik (930 p.)
0 głosów
1 odpowiedź 1,993 wizyt
pytanie zadane 15 grudnia 2016 w SQL, bazy danych przez bartek7910 Obywatel (1,980 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2459p. - CC PL
  9. 2184p. - Maurycy W
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...