0

だから、csvファイルから取得したこのユーザーリストがあります。

私がする必要があるのはこれです: アップロードするファイルを取得し、ユーザーが存在するかどうかを各行で確認します。存在する場合は更新するだけです。存在しない場合は、新しいアカウントを作成する必要があります。

私はロジックとしてそれを行う方法を知っています...しかし、csvインポートを使用しているときに混乱します...

だから、ここに私が使用するものがあります:

$handle = fopen($_FILES['filename']['tmp_name'], "r");

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $import="INSERT into users (Username,Password,Email,first_name,last_name,phone,user_id,age,sex) values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]')";
    mysql_query($import) or die(mysql_error());
}

fclose($handle);

私が必要とするのは次のようなものです:

foreach (user as $data[7]) {
    if user exists in user table then $query1 
    else $query2    
}

ありがとう

4

2 に答える 2

1

If user_id is primary key of your table you can use the ON DUPLICATE KEY UPDATE clause to insert new row or update existing ones in just one statement:

INSERT INTO users (Username,Password,Email,first_name,last_name,phone,user_id,age,sex)  
VALUES('$data[0]','".md5($data[1])."','$data[2]','$data[3]',
       '$data[4]','$data[5]','$data[6]','$data[7]','$data[8]')
ON DUPLICATE KEY UPDATE
        Username = '$data[0]', 
        Password = '".md5($data[1])."', 
        Email = '$data[2]', 
        first_name = '$data[3]', 
        last_name = '$data[4]', 
        phone = '$data[5]', 
        age = '$data[7]', 
        sex = '$data[8]';

Check details in MySQL documentation: http://dev.mysql.com/doc/refman/5.6/en/insert.html

于 2013-01-04T14:59:32.220 に答える
0

MySQL には と呼ばれる便利な小さな関数がLOAD DATA INFILEあり、PHP で挿入ループを実行する必要なく、CSV ファイルを直接ロードできます。

コード全体は次のように単純です。

$import="LOAD DATA INFILE '{$_FILES['filename']['tmp_name']}' INTO users (Username,Password,Email,first_name,last_name,phone,user_id,age,sex)";
mysqli_query($connection, $import) or die(mysqli_error($connection));

MySQL のマニュアル ページを参照してください: http://dev.mysql.com/doc/refman/5.1/en/load-data.html

注:上記はテストしていません。MySQL が一時ファイルへの直接読み取りアクセス権を持っていない場合は、MySQL が最初に読み取ることができる場所に移動するか、LOAD DATA LOCAL INFILE代わりに使用する必要がある場合があります。

注2:関数が廃止されたため、mysqli_xxx()代わりに関数を使用しています。必要に応じて自由に元に戻してください。ただし、使用は推奨されないことに注意してください。できるだけ早くすべての通話を変更することをお勧めします。mysql_xx()mysql_xx()mysql_xx()mysql_xx()mysqli_xxx()

于 2013-01-04T16:03:21.863 に答える