Avatar billede kris919g Nybegynder
16. december 2013 - 20:38 Der er 15 kommentarer

hjælp kan ikke fixe fejl i php

hej er ved at lave en automastik database opdatere for http://www.getmangos.com som skal kunne uploade mysql filer til en database men for nogle fejl og den vil ikke vise mine tabeller og ved ikke hvordan jeg fixer det her kan i se min kode:
min fejl er i line 25 og så er der mistanke om fejl i line 7,10,40,58,59,60,66,67 håber i kan finde ud af hvad der er galt
Kode:

du kan også se koden på github.com hvis du gerne vil se linje nummer:

https://github.com/kris914g/Mangos-Mysql-auto-updater-/blob/master/index.php

<?php




echo "Mangos AutoUpdate<hr>";
if ($handle = opendir('./updates'))
/***********************************************************************************************************/
/******************************************Database info****************************************************/
$server = "localhost";
$username = "root";
$password = "password";

$worlddb = "mangosd"; //world database
$realmdb = "realmd"; //realm database
$charactersdb = "characters" // characters database
/***********************************************************************************************************/






/******Do not make changes if you dont know what are you doing**********************************************/
echo "<table border=\"1\">
    <tr>
        <td>#</td>
        <td>Revision</td>
        <td>#</td>
        <td>Database</td>
        <td>DB table</td>
        <td>Status</td>
    </tr>";
 
    $i = 0;
    while (false !== ($file = readdir($handle))) {
        if($file == "." || $file == ".."){}else{
            $i++;
            $exp = explode("_", $file, 4);
            $commit_version = str_replace(".sql", "", $exp{[0]);
            $updatenum = str_replace(".sql", "", $exp[1]);
           
            if(!is_numeric($updatenum)){
                $dbname = str_replace(".sql", "", $exp[1]);
                $tablename = str_replace(".sql", "", $exp[2]);
                $try = str_replace(".sql", "", $exp[3]);
                $updatenum = "#";
            }else{
                $dbname = str_replace(".sql", "", $exp[2]);
                $tablename = str_replace(".sql", "", $exp[3]);
                $try = str_replace(".sql", "", $exp[4]);
            }
            if($try != ""){
                $tabelname = $tablename."_".$try;
            }
            if($dbname == "mangos"){$dbname1 = $worlddb;}
            if($dbname == "realmd"){$dbname1 = $realmd
            if($dbname == "characters"){$dbname1 = $charactersdb;}
            if($dbname != ""{
                mysql_connect($server, $username, $password;
                mysql_select_db($dbname1);
            }
            if($tablename != ""){
                $table = "INTO TABLE $tablename";
            }else{
                $table = "";
                $table = "#";
            }
           
            echo "
                <tr>
                    <td>$i</td>
                    <td>$commit_version</td>
                    <td>$updatenum</td>
                    <td>$dbname1</td>
                    <td>$tablename</td>";
            if($tablename != "#"){
            if(mysql_query("LOAD DATA LOCAL INFILE ',/updates/$file' $table")){
                copy(".updates/$file", ".succeed/$file");
                $status = "<span style=\"color: green;\">Succeed.</span>";
                unlink("./updates/$file");
            }else{
                $status = "<span style=\"color: red;\">Failed</span>: ".mysql_error()."";
                }
            }else{
                copy("./updates/$file", "TryManually/$file");
                $status = "<span style=\"color: orange;\">skiped</span>: try to update them Manually.</span>";
                unlink("./updates/$file");
                }
            echo" <td>$status</td>
                    </td>";
            mysql_close();
              }
        }
       
        echo "</table>";
       
               
        closedir($handle);   
}
Avatar billede erikjacobsen Ekspert
16. december 2013 - 21:45 #1
Du skulle meget gerne mangle et semikolon i linie 16
Avatar billede jakobdo Ekspert
16. december 2013 - 22:37 #2
Og mangler der ikke en { start efter linje 7 ?
Eller som ny linje 8 ?
Avatar billede kris919g Nybegynder
17. december 2013 - 12:36 #3
tak for det har fået udateret de på github men kan i se om min script virker rigtigt i linje 87-89
Avatar billede erikjacobsen Ekspert
17. december 2013 - 13:24 #4
Det er svært at sige - hvad sker der? Hvad burde der ske?

Men jeg tror at kommaet i linien

  if(mysql_query("LOAD DATA LOCAL INFILE ',/updates/$file' $table")){

nok skal være et punktum. Du har undersøgt om "LOAD DATA LOCAL INFILE" er tilladt på mysql-serveren. Og mangler der ikke en INTO ? Og så er der en del andre parametre man kan give til LOAD DATA.
Avatar billede kris919g Nybegynder
17. december 2013 - 14:06 #5
hvordan ville du gøre det?
Avatar billede erikjacobsen Ekspert
17. december 2013 - 16:57 #6
Om man kan bruge LOAD DATA?  Jeg ville prøve at køre kommandoen direkte på mysql-serveren, udenom din php-kode.
Avatar billede kris919g Nybegynder
17. december 2013 - 21:11 #7
men hvis det nu kun kan bruges i dette php script hvad ville så være din bedste løsning?
Avatar billede erikjacobsen Ekspert
17. december 2013 - 21:36 #8
Jeg ved ikke hvad du skal lave - jeg kan ikke rådgive
Avatar billede kris919g Nybegynder
18. december 2013 - 07:20 #9
okay er der ellerers andre som kan finde nogle fejl det er nemlig første gang jeg laver noget lidt avanceret når jeg køre scriptet får jeg disse fejl

Notice: Undefined offset: 3 in C:\xampp\htdocs\auto\index.php on line 47

Notice: Undefined variable: dbname1 in C:\xampp\htdocs\auto\index.php on line 62

Notice: Undefined variable: dbname1 in C:\xampp\htdocs\auto\index.php on line 77

Notice: Undefined offset: 4 in C:\xampp\htdocs\auto\index.php on line 52
Avatar billede MADOlsen Forsker
18. december 2013 - 08:15 #10
Selvom jeg ikke har kigget på koden (det ville ikke have hjulpet alligevel, har ikke arbejdet med php siden studietiden), så kunne det jo godt tyde på, at du på de nævnte linier bruger variabler og offsets, som du ikke har defineret...
Avatar billede kris919g Nybegynder
18. december 2013 - 11:30 #11
okay tak for det vil kikke nærmere på det
Avatar billede kris919g Nybegynder
18. december 2013 - 15:34 #12
men er der ikke nogen som kan komme med en løsning for dette script
Avatar billede erikjacobsen Ekspert
18. december 2013 - 18:02 #13
At du får en "Notice: Undefined offset: 3 in C:\xampp\htdocs\auto\index.php on line 47" tyder på at de filnavne du løber igennem i (alle) har tilstrækkeligt mange "_" i sig til at kunne give et element med index 3.
Avatar billede kris919g Nybegynder
19. december 2013 - 15:42 #14
så det er sql filen den er gal med eller hvordan kan man fixe det
Avatar billede erikjacobsen Ekspert
19. december 2013 - 18:07 #15
Det ville hjælpe meget, hvis du bare har den mindste idé om hvad det er du foretager dig.

Den pågældende linie, jeg peger på, har intet med SQL at gøre. Det er resultatet af et gennemløb af filerne i et katalog. Du springer filerne "." og ".." over, og så er der så mindst eet af de resterende filnavne, der ikke har tilstrækkeligt mange "_"-ere i sig.

Det er hvad fejlbeskeden betyder - men hvad det så kommer af i dit system, kan jeg af gode grunde ikke sige noget om.

Jeg synes ikke dine spørgsmål og indlæg her, tyder på at du ved noget som helst om hvad der foregår. Et godt vil være at begynde at lære det her "PHP og MySql" fra bunden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester