2017-09-22 1 views
-2

Ich habe einige der vorherigen Posts für genau das gleiche Problem, aber war immer noch nicht in der Lage, das Problem zu lösen. Ich denke, dass mein Problem anders als andere sein kann. Ich denke, es kann sich um ein Dateiberechtigungs-Problem handeln oder um den Speicherort der Datei oder des Pfads. Vielleicht ist es ein MacOS Sandboxing Problem? Diese Anweisung funktioniert in MySQL Workbench einwandfrei. Ich benutze MySQL 5.7.19 auf MacOS 10.12.6. Irgendwelche Ideen???PHP zum Laden von Daten LOKALES INFIL funktioniert nicht

<?php 

$host="localhost"; 
$port=3306; 
$socket="/tmp/mysql.sock"; 
$user="user"; 
$password="password"; 
$dbname="Test_Company"; 

$con = new mysqli($host, $user, $password, $dbname, $port, $socket) 
or die ('Could not connect to the database server' . mysqli_connect_error()); 

$sql = "LOAD DATA LOCAL INFILE '/Users/Test.User/Desktop/Data/Inventory Data.csv' 
    INTO TABLE inventory data 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '\"' 
    IGNORE 1 LINES " ; 

if ($stmt = $con->prepare($sql)) { 
$stmt->execute(); 
$stmt->bind_result($field1, $field2); 
while ($stmt->fetch()) { 
    //printf("%s, %s\n", $field1, $field2); 
} 
$stmt->close(); 
} 

$con->close(); 

?> 

Scheint, wie es ziemlich einfach sein sollte und gerade nach vorne, aber diese nicht heraus kann ...

+0

fehlt ein '"; 'vom Ende des' IGNORE 1 LINES' –

+0

Leider, dass ich nur vergessen, in meinem Beitrag, aber es ist in den PHP Skript Ich versuche zu laufen Noch immer kein Glück – jgansterjr

+0

Können Sie das Skript mit dem gesamten Code aktualisieren - es gibt nichts in Ihrem Code, der das SQL ausführt –

Antwort

0

Afaik, die LOAD DATA INFILE Optionen sind standardmäßig nicht aktiviert. Sie haben es zu aktivieren, bevor eine LOAD DATA INFILE Abfrage ausgeführt wird:

$con = new mysqli($host, $user, $password, $dbname, $port, $socket) 
$con->options(MYSQLI_OPT_LOCAL_INFILE, TRUE); 
// 
// $stmt = $con->prepare($sql); 
// etc... 
+0

Bevor ich meine Frage gepostet habe, habe ich das LOAD bestätigt DATA INFILE wurde aktiviert, und ich habe die $ con> -Optionen (M YSQLI_OPT_LOCAL_INFILE, WAHR); und getestet und noch keine Daten. Außerdem erzeugt das PHP keine Fehler. Ich wünschte es wäre, das würde helfen ... – jgansterjr

+0

Führt '$ stmt-> execute()' 'TRUE' zurück? – axiac

+0

Hmmm ... funktioniert 'LOAD DATA' mit' preparate() '? Versuchen Sie es direkt als '$ conf> query ($ sql)' auszuführen. – axiac

Verwandte Themen