• 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

Object Storage Arubacloud
0 głosów
135 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 Ekspert (344,860 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 (252,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 (11,270 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ź 223 wizyt
pytanie zadane 30 stycznia 2022 w PHP przez trixter310 Obywatel (1,440 p.)
+1 głos
1 odpowiedź 1,582 wizyt
pytanie zadane 6 września 2015 w PHP przez tytanik2011 Użytkownik (930 p.)
0 głosów
1 odpowiedź 1,861 wizyt
pytanie zadane 15 grudnia 2016 w SQL, bazy danych przez bartek7910 Obywatel (1,980 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...