kopiranje tabele iz mysql z php

pozdravljeni,

mogoče komu prov pride. nampreč sledeča koda deluje za kopiranje celotne mysql baze z enim klikom.
http://bkb.si/copyDB.html

ampak mene zanima če bi kdo znal popravit da ne kopira celotne baze ampak samo določeno tabelo iz baze katero bi vpisal nekam v skripto...?

hvala, lp

9 odgovorov

Namesto

function copyAll() {

zapiši

function copyAll($table = NULL) {

Malo nižje zamenjaj

$result = mysql_query("SHOW TABLES", $resource);

z

$result = mysql_query("SHOW TABLES" . (!is_null($table) ? " LIKE '" . mysql_real_escape_string($table) . "'"), $resource);

Potem lahko kličeš $copier->copyAll(), ki skopira vse tabele, ali pa $copier->copyAll("tabela"), ki skopira specifično tabelo.

10

super
mogoče veš kje popraviti ker napiše:
Parse error: syntax error, unexpected ')' in /home/rstergar/idol.si/test/copyclass.php on line 120

sem probal tudi brez () pa napise:
Parse error: syntax error, unexpected ',' in /home/rstergar/idol.si/test/copyclass.php on line 120

hvala

Ah ja ...

$result = mysql_query("SHOW TABLES" . (!is_null($table) ? " LIKE '" . mysql_real_escape_string($table) . "'"), $resource);

zamenjaj z

$result = mysql_query("SHOW TABLES" . (!is_null($table) ? " LIKE '" . mysql_real_escape_string($table) . "'" : NULL), $resource);
1

deluje! hvala ;)

še eno vprašanje...
mogoče veš kako bi tole uporabil:

SELECT * FROM baza left outer join baza2 ON baza.id=baza2.id where baza2.id IS NULL
to sicer deluje...ampak samo tukaj: http://www.sqlfiddle.com/#!2/9a33d/20
zdej pa nevem kak bi js to uporabo v php-u?

tukaj so dve baze z enko tabelo in bi rad da preveri obe tabeli in izpiše kaj v drugi tabeli manjka in bi potem to dodal v drugo tabelo (celotno manjkajočo vrsto)...

če se da to v php ali kako bi bilo najlažje?

hvala! lp

ok sm skuzo... sam mi noce delat...
v sql datoteko dam tole in jo zazenem z php (isto kot da bi kodo prilepil v phpmyadmin):
INSERT INTO rstergartest2.testiramte SELECT * FROM rstergartest.testiramte left outer join rstergartest2.testiramte ON rstergartest.testiramte.prvi=rstergartest2.testiramte.prvi where rstergartest2.testiramte.prvi IS NULL
vendar pokaze napako: #1136 - Column count doesn't match value count at row 1

ampak samo tole:
SELECT * FROM rstergartest.testiramte left outer join rstergartest2.testiramte ON rstergartest.testiramte.prvi=rstergartest2.testiramte.prvi where rstergartest2.testiramte.prvi IS NULL
pa deluje super!?

mogoce kdo ve kako to sestavit da bo ob enem izvozlo in uvozlo podatke?
hvala

MySQL napaka #1136 - Column count doesn't match value count at row 1 ti pove, da število polj, ki jih želiš vstavit v tabelo, ne ustreza številom polj v tabeli. V tvojem primeru s select stavkom iz tabele rstergartest.testiramte izbereš x polj, v rstergartest2.testiramte je pa y polj. Zadevo lahko popraviš tako, da navedeš polja v insert stavku (INSERT INTO rstergartest2.testiramte (id, polje1, polje2, ...) ...) ali pa v select stavku (INSERT INTO ... SELECT id, polje1, polje2, ... FROM ...). Oziroma še bolje, polja navedeš v obeh stavkih. ;-)

evo mi je ratalo.. ampak mogoce ves ce se da to izvrsit z php kajti to mi ne deluje:
$con = mysqlconnect("localhost", "uname", "pass") or die(mysqlerror());
mysqlselectdb("rstergarotroskesobe") or die(mysqlerror());
mysqlquery("INSERT INTO `rstergarotroskesobe.SCproductsSELECTrstergardom.SCproducts.productID,rstergardom.SCproducts.categoryID,rstergardom.SCproducts.customersrating,rstergardom.SCproducts.id1cFROMrstergardom.SCproductsleft outer joinrstergarotroskesobe.SCproductsONrstergardom.SCproducts.productID=rstergarotroskesobe.SCproducts.productIDwhererstergarotroskesobe.SCproducts.productID` IS NULL");
Print "done";
mysql
close($con);

deluje pa v phpmyadminu ce kodo prilepim v sql komando...

Za 'mysqlquery(...)' dodaj 'or die(mysqlerrno() . " : " . mysql_error())' in potem debuggaj s pomočjo googla (kopiraš napako in v 99% imaš odgovor naveden med prvimi tremi rezultati). Nisem prepričan, kako točno PHP hendla zahteve med več bazami, očitno pa PhpMyAdminu to ne dela težav.

1