Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [MySQL][PHP]Zapis struktury mysql przez php
Johnas
post
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


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. }


Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Johnas
post
Post #3





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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];
Go to the top of the page
+Quote Post
Johnas
post
Post #5





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jeden temat wystarczy, potem ludzie odpowiadaja w kilku roznuch tematach na to samo
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 02:12