2017-09-22 17 views
-2

まったく同じ問題について以前の投稿の一部を見ていますが、まだ問題を解決できませんでした。私の問題は他のものと異なるかもしれないと思う。ファイルアクセス権の問題か、ファイルやパスの場所に関連する問題かもしれません。おそらく、MacOSのサンドボックス問題ですか?この文はMySQL Workbenchでうまく動作します。 MacOS 10.12.6でMySQL 5.7.19を実行しています。何か案は???PHPがLOAD DATA LOCAL INFILEで動作しない

<?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(); 

?> 

が...

+0

"'欠けはあり; '' 1 LINES' –

+0

をIGNORE残念ながら、私はちょうど私のポストにいることを忘れてしまったが、それはPHPで年代末からスクリプトを実行しようとしています。まだ運がありません... – jgansterjr

+0

すべてのコードでスクリプトを更新できますか?コード内にSQLを実行するものはありません –

答えて

0

私の知る限りそれはまっすぐ進むかなり単純なものとすべきであるように思えるが、これを把握することはできません、LOAD DATA INFILEオプションはデフォルトで有効になっていません。あなたはLOAD DATA INFILEクエリを実行する前に、それを有効にする必要があります。

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

質問を投稿する前に、私はLOAD DATA INFILEが有効になりました。私は先に進み、$ con-> options(M YSQLI_OPT_LOCAL_INFILE、TRUE);テストされ、まだデータはありません。また、PHPではエラーは発生しません。私はそれが助けてくれることを望みます... – jgansterjr

+0

'$ stmt-> execute()' TRUE'を返しますか? – axiac

+0

Hmmm ... 'LOAD DATA'は' prepare() 'で動作しますか? '$ con-> query($ sql)'として直接実行してみてください。 – axiac

関連する問題