php - 从 csv 文件上传时设置条件

标签 php mysql

所以,我有一个从 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    
}

谢谢

最佳答案

如果 user_id 是表的主键,您可以使用 ON DUPLICATE KEY UPDATE 子句在一条语句中插入新行或更新现有行:

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]';

查看 MySQL 文档中的详细信息: http://dev.mysql.com/doc/refman/5.6/en/insert.html

关于php - 从 csv 文件上传时设置条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14156992/

相关文章:

php - Laravel lockforupdate(悲观锁)

php - Laravel 中的 try-catch 样板

php - 如何在 PHP 和 XML 中使用 foreach(simplexml)

PHP+邮件服务器

php - 检查是否有人已经投票

php - ZF2+Doctrine2 - 在 Mac 上突然出现错误 : "Doctrine\ORM\EntityManager"; no instance returned

php - 根据使用 php 检查的复选框从数据库中删除多行

php - 投票系统和 PHP session 不工作

php - 如何将以前的值连接到 sql 中的新值?

PHP 密码更新表单未写入数据库