Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy ktoś dostrzega, gdzie leży problem?
Forum PHP.pl > Forum > Bazy danych > MySQL
escaflowne
Witam!

Mam taki oto skrypt:
[php:1:66c9f24a89]<?
include "db_target.php";
?>
<html>
<head>
<title>Przywracanie kopii bazy danych na serwer</title>
<style type="text/css">
body { font-family: "verdana", sans-serif }
</style>
</head>
<body bgcolor="#f4f4f4" link="#000000" alink="#000000" vlink="#000000">
<center>
<TABLE WIDTH="80%" border="0" cellspacing="0" bgcolor="#8BA5C5">
<TR>
<TD valign="top"> <h4>MySQL php Backup :: Restore</h4><br><br><?php echo"Plik: $file"; ?></TD>
</TR>
<TR>
<TD valign="top">
<?php
flush();
$conn = mysql_connect($dbhost,$dbuser,$password) or die(mysql_error());
$filename = $file;
set_time_limit(1000);
$file=fread(fopen($path.filename, "r"), filesize($path.$filename));
$query=explode(";#%%n",$file);
for ($i=0;$i < count($query)-1;$i++) {
$baza = mysql_db_query($dbname,$query[$i],$conn) or die(mysql_error());
}
include("config.php2");
if($baza){
echo "<table width="90%"><tr><td align="center">";
echo "ilość przetworzonych wierszy: ".mysql_affected_rows();
echo "<b>GOTOWE!</b><br><br></td></tr></table>";
}
else{
echo"<table width="90%"><tr><td align="center">NIE GOTOWE!<br>";
echo "Plik: $filename" . mysql_error();
echo"<br></td></tr></table>";
}
exit;
?>
</TD>
</TR>
</TABLE>
</center>
</body>
</html>

?>[/php:1:66c9f24a89]

Skrypt ten powinien importować do bazy danych plik .sql, jednakże nie robi tego. Po długich rozmyślaniach doszedłem do wniosku, że błąd leży gdzieś w okolicach explode(...), gdyż za każdym razem count($query) zwraca 1, pętla poniżej się nie wykonuje (1-1 = 0), i import do bazy danych nie zostaje wykonany sad.gif
W pliku db_target.php znajdują się jedynie dane bazy danych.
wojto
Nie wiem, moze sie myle, ale wydaje mi sie, ze explode dzieli zmienna wg. tego wzorca co podales, czyli wg ;#%%n dlatego jest tylko jeden element.
Jak chcesz dzielic wg dowolnego z tych znakow, to uzyj split
escaflowne
Plik .sql, który chcę zaimportować wygląda jak każdy inny plik .sql, z wyjątkiem tego, że na końcu każdej linii są znaki #%%. Plik, który chcę zaimportować, ma 3 linijki (3 polecenia MySQL), a skrypt wykrywa tylko jedną linijkę sad.gif
adwol
Cytat
Witam!

Mam taki oto skrypy:
[php:1:5eabeb1970]<?
$file=fread(fopen($path.filename, "r"),
?>[/php:1:5eabeb1970]

Nie zapomniało Ci się w tym miejscu wstawić $ przed filename? pewnie plik się w ogóle nie otwiera i nie wczytuje więc explode nie ma co rozbijać.
majkel
z tego co ja tam widze to fread siedzi...
escaflowne
Cytat
Cytat
Witam!

Mam taki oto skrypt:
[php:1:2e16069dcb]<?
$file=fread(fopen($path.filename, "r"),
?>[/php:1:2e16069dcb]

Nie zapomniało Ci się w tym miejscu wstawić $ przed filename? pewnie plik się w ogóle nie otwiera i nie wczytuje więc explode nie ma co rozbijać.

Poprawiłem. Dalej nic... sad.gif
adwol
Cytat
Poprawiłem. Dalej nic... sad.gif

To wypisz sobie jakiegoś debuga z zawartością $file, czy napewno dobrze się wczytuje a najlepiej poślij go na forum, żeby było na czym to obejrzeć dokładniej. winksmiley.jpg
escaflowne
[sql:1:034989f3c5]DROP TABLE IF EXISTS sys_is;#%%
CREATE TABLE sys_is (
1 varchar(255) DEFAULT 'a' NOT NULL,
2 varchar(255) DEFAULT 'b' NOT NULL,
3 varchar(255) DEFAULT 'c' NOT NULL,
4 varchar(255) DEFAULT 'b' NOT NULL,
5 varchar(255) DEFAULT 'a' NOT NULL
);#%%

INSERT INTO sys_is VALUES ('a','b','c','b','a');#%%
[/sql:1:034989f3c5]
escaflowne
Dobra, poradziłem sobie z tym. Ale teraz mam inny problem. Mam takie oto zapytanie MySQL:
[sql:1:de7aab153f]CREATE TABLE sys_is ( 1 varchar(255) DEFAULT 'a' NOT NULL, 2 varchar(255) DEFAULT 'b' NOT NULL, 3 varchar(255) DEFAULT 'c' NOT NULL, 4 varchar(255) DEFAULT 'b' NOT NULL, 5 varchar(255) DEFAULT 'a' NOT NULL );[/sql:1:de7aab153f]
A MySQL zwraca odpowiedź:
Kod
Something is wrong in your syntax obok '1 varchar(255) DEFAULT 'a' NOT NULL, 2 varchar(255) DEFAULT' w linii 2

Gdzie jest błąd?
kurtz
Hej
Cytat
Dobra, poradziłem sobie z tym. Ale teraz mam inny problem. Mam takie oto zapytanie MySQL:
[sql:1:c26c6a301c]CREATE TABLE sys_is ( 1 varchar(255) DEFAULT 'a' NOT NULL, 2 varchar(255) DEFAULT 'b' NOT NULL, 3 varchar(255) DEFAULT 'c' NOT NULL, 4 varchar(255) DEFAULT 'b' NOT NULL, 5 varchar(255) DEFAULT 'a' NOT NULL );[/sql:1:c26c6a301c]
A MySQL zwraca odpowiedź:
Kod
Something is wrong in your syntax obok '1 varchar(255) DEFAULT 'a' NOT NULL, 2 varchar(255) DEFAULT' w linii 2

Gdzie jest błąd?
Kolumny mysql myli z liczbami. Musisz dodac ``.
[sql:1:c26c6a301c]CREATE TABLE sys_is ( `1` varchar(255) DEFAULT 'a' NOT NULL, `2` varchar(255) DEFAULT 'b' NOT NULL, `3` varchar(255) DEFAULT 'c' NOT NULL, `4` varchar(255) DEFAULT 'b' NOT NULL, `5` varchar(255) DEFAULT 'a' NOT NULL );[/sql:1:c26c6a301c]
Pozdrawiam
escaflowne
Faktycznie, pomogło. Dzięki kurtz! biggrin.gif
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.