MySQL Version?

Fruitgum

Erfahrenes Mitglied
Hallo Leute,

in meinem CSV Import Script muss ein Fehler vorliegen den ich nicht verstehe.

Es funkioniert mit einer Mysql version 5.0.45 aber soll auf einen Server mit der Version 5.0.23 laufen, doch dort sagt er mir, das er einige Befehle nicht ausführen kann und es an der Version von Mysql liegt?

Was kann ich tun?

Hier einmal mein kompletter Code:

Upload: CSV DATEI

PHP:
<?php 

if (isset($_FILES["datei"])) { 

    if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) {  

        $regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i"; 

        if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 10000000) { 
          
            if(move_uploaded_file($_FILES["datei"]["tmp_name"],"csv/".$_FILES["datei"]["name"])) { 
include("header.php");  
            } else { 
                echo "Fehler: Datei konnte nicht kopiert werden!";  
            }  

        } else { 
            echo "Fehler: Im Dateinamen oder Dateigrössen Limit!"; 
        } 

    } else { 
        echo "Fehler: Während der Übertragung aufgetreten!"; 
    } 

} else { 
    echo "Fehler: Dateiupload fehlgeschlagen!"; 
} 

?>


Mit dem Formular gebe ich an die Upload.php weiter und lade ich die CSV auf den Server.

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>CSV-Datei Hochladen</title>
<link href="sense.css" rel="stylesheet" type="text/css" />
</head>
<body>
<center>
<div id="seite">
<div id="admin">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font face="Arial, Helvetica, sans-serif" size="6">CSV-Import </font></p>
<form method="post" action="upload.php" enctype="multipart/form-data">
 <p>&nbsp;</p>
 <p>Datei:
 <input type="hidden" name="MAX_FILE_SIZE" value="100000">
 <input type="file" name="datei" size="50"  maxlength="100000">
 </p>
 <p>&nbsp;</p>
 <p>
   <input type="submit" name="Submit" value="Senden">
 </p>
</form>
<p>
  <?php

// Dateiinformationen (Ausgabe über Schleife)
if (isset($_FILES["datei"])) {
  foreach ($_FILES["datei"] as $key=>$element) {
    echo "[$key] => $element<br>";
  }
}
?>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&copy; &reg; </p>
</div>
</div>
</center>
</body>
</html>

Hat alles geklappt, kommt diese:

PHP:
<html> 
<head> 
<title>Dateiupload – Erfolgreich</title> 
<link href="sense.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style1 {font-size: x-small}
-->
</style>
</head>

<body>
<center> 
<div id="seite">
<div id="admin"> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p><font face="Arial, Helvetica, sans-serif" size="6">Datei erfolgreich Hochgeladen!</font></p> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font face="Arial, Helvetica, sans-serif"><a href="eintragen.php?file=<?php echo $_FILES["datei"]["name"]; ?>">[ CSV-Datei jetzt in die Datenbank schreiben ]</a></font></p> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="style1">&copy; &reg; </p>
</div>
</div>
</center> 
</body> 
</html>


dann wird sie in die Datenbank eingetragen mit dieser:

PHP:
<link href="sense.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style1 {font-size: x-small}
-->
</style>
<center>
<div id="seite">
<div id="admin">
<?php

include "config_sense.php"; 


mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db], $db_Password[$select_db]) || 
die("Keine Verbindung zur Datenbank möglich: ".mysql_error()); 
mysql_select_db($db_Database[$select_db]); 



$sql2 = 'LOAD DATA LOCAL INFILE \'csv/'.$_GET["file"].'\'  
         REPLACE INTO TABLE `tx_cal_event`  
         FIELDS TERMINATED BY \';\'  
         ENCLOSED BY \'"\'  
         ESCAPED BY \'\\\\\'  
         LINES TERMINATED BY \'\\r\\n\''; 
            
$result = mysql_query($sql2); 

echo  mysql_error(); 
# echo "<br><br><center>Einräge wurden hinzugefügt bzw. ersetzt: ".$result."</center>"; 
 

foreach (glob("csv/*.csv") as $filename) {
   unlink($filename);
}
echo "<br><br><center>".$_GET["file"]." wurde gelöscht</center>";
echo "<br>"; 

# http://www.senseproduction.de 
?>

<p><font face="Arial, Helvetica, sans-serif"><a href="import.php">[ Zurück ]</a></font></p>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="style1">&copy; &reg; </p>
</div>
</div>
</center>

Also bei einer Mysqlversion 5.0.23 geht es nicht?
Weiß einer weiter?

LG, Fruit
 
Hallo,

ja da gibt es zwei Möglichkeiten. Entweder die Funktion selber schreiben, sollte ja kein Problem sein, wenn die csv vernünftig strukturiert ist (Spaltenseparator und Zeilentrennung). Oder aber die mysqlimport() Funktion über den exec Befehl ausführen.

Gruss
 
Hallo,

sag mir bitte wo. Bin in PHP eher eine Null. :D

Ich verstehe nicht richtig wie du das meinst.


Grüße
 
Es wurde diese Zeile geändert und dann ging es.

PHP:
mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db], $db_Password[$select_db], false, 128) ||

Grüße
 

Neue Beiträge

Zurück