Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapis struktury mysql przez php
Forum PHP.pl > Forum > Przedszkole
Johnas
Witam, próbuje zrobić zapis struktury bazy danych mysql, ale mam problem... mianowicie nie mogę foreachować "SHOW Tables"... wie ktoś może co jest nie tak w tym kodzie ?

  1. foreach ($tables as $table) {
  2. echo $table["Table_in_4um"];
  3. echo "CREATE TABLE IF NOT EXISTS `$table`";
  4. $structure = $engine->mysql->query("DESCRIBE ".$table);
  5. print_r($structure);
  6. echo "<br><br>";
  7. }


nospor
No a sprawdzales w ogole co masz w $tables?

print_r($tables);

pomijajac to co napisalem wczesniej, to twoj kod nie ma zadnego sensu

1) Skoro probujesz leciec po wyniku show tables to znaczy ze tabele sa a ty w petli i tak probujesz je tworzyc
2)
echo $table["Table_in_4um"];

Raz $table to tablica, a za chwile linie nizej
echo "CREATE TABLE IF NOT EXISTS `$table`";
traktujesz $table jako tekst. Sie zdecyduj co tam ma byc: tablica czy tekst
Johnas
Tak ma być... Chodzi o to że dałem Table zamiast Tables

  1. foreach ($tables as $table) {
  2. $table = $table["Tables_in_".$config->DBname];
  3. $primery = "";
  4. $structures = $engine->mysql->query("DESCRIBE ".$table);
  5.  
  6. $table = str_replace($engine->prefix, "", $table);
  7. $mysql .= '$adds['.$c.']["mysql"] = "CREATE TABLE IF NOT EXISTS `".$engine->prefix."'.$table.'` ( '.PHP_EOL;
  8. foreach ($structures as $structure) {
  9. $mysql .= "`".$structure["Field"]."` ".$structure["Type"]." ";
  10. if ($structure["Null"] == "NO")
  11. $mysql .= "NOT NULL";
  12. else
  13. $mysql .= "NULL";
  14. if (strlen($structure["Extra"]) > 0)
  15. $mysql .= " ".$structure["Extra"].",".PHP_EOL;
  16. else
  17. $mysql .= ",".PHP_EOL;
  18. if ($structure["Key"] == "PRI")
  19. $primery = 'PRIMARY KEY (`'.$structure["Field"].'`)';
  20. }
  21. $mysql .= $primery.PHP_EOL;
  22. $mysql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\";".PHP_EOL;
  23.  
  24. $mysql .= '$adds['.$c.']["name"] = "'.$table.'";'.PHP_EOL;
  25. $c++;
  26. }


Jedna literówka zaburza działanie programu
nospor
Cytat
foreach ($tables as $table) {
$table = $table["Tables_in_".$config->DBname];


To zacznij tworzyc nazwy zmiennych tak jak powinno byc i nie nadpisywac sobie nawzajem. np

foreach ($tables as $tableData) {
$table = $tableData["Tables_in_".$config->DBname];
Johnas
Cytat(nospor @ 18.08.2022, 09:58:31 ) *
No a sprawdzales w ogole co masz w $tables?

print_r($tables);

pomijajac to co napisalem wczesniej, to twoj kod nie ma zadnego sensu

1) Skoro probujesz leciec po wyniku show tables to znaczy ze tabele sa a ty w petli i tak probujesz je tworzyc
2)
echo $table["Table_in_4um"];

Raz $table to tablica, a za chwile linie nizej
echo "CREATE TABLE IF NOT EXISTS `$table`";
traktujesz $table jako tekst. Sie zdecyduj co tam ma byc: tablica czy tekst



Próbuję zrobić updater, który będzie aktualizować pliki i bazę danych więc pobiera mi on automatycznie strukturę bazy danych i tworzy plik który po wgraniu na FTP będzie automatycznie aktualizować tam pliki... problem mam ze stworzeniem zipa z katalogami, bo niby je tworzy i wygląda wszystko ładnie, ale gdy je wypakowuje to wszystkie pliki wysypuje mi do katalogu w którym je wypakowuje:

przykład:
global/
->plik.php
->plik2.php
->plik3.php
global/katalog/
->plik-katalog.php/
->plik-katalog2.php

wypakowuje mi jako
/
->plik.php
->plik2.php
->plik3.php
->plik-katalog.php/
->plik-katalog2.php

ale mam do tego oddzielny temat... nie wiem jak to zrobić aby było z katalogami...
nospor
jeden temat wystarczy, potem ludzie odpowiadaja w kilku roznuch tematach na to samo
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.