Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自csv数据的Mysql更新命令_Mysql - Fatal编程技术网

来自csv数据的Mysql更新命令

来自csv数据的Mysql更新命令,mysql,Mysql,我在兜圈子,请有人帮我解决这个相对容易的问题 我有一张1200人的桌子。 表db_user_accounts中的一个字段是“status” 我有一个csv中的用户子列表,我想将“状态”设置为“5” csv是已订购的用户状态 我发现这个- <?php if (($handle = fopen("input.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALS

我在兜圈子,请有人帮我解决这个相对容易的问题

我有一张1200人的桌子。 表db_user_accounts中的一个字段是“status” 我有一个csv中的用户子列表,我想将“状态”设置为“5” csv是已订购的用户状态

我发现这个-

<?php
    if (($handle = fopen("input.csv", "r")) !== FALSE)
    {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
        {
            mysql_query(UPDATE db-user_accounts SET status="{$data[1]}" WHERE user = "{$data[0]}"); 
        }
    fclose($handle);
    }
?>

我不确定1000是做什么用的,也不确定这是否真的有效。 非常感谢您的建议
谢谢

这段代码看起来不错,应该可以用。1000是PHP手册中的行长度(引用如下):

参考:

必须大于要在中找到的最长行(以字符为单位) CSV文件(允许尾随行结束字符)。否则,, 行被拆分为长度字符块,除非拆分 将发生在外壳内

省略此参数(或在PHP5.1.0及更高版本中将其设置为0) 最大线长度不受限制,稍慢一些

您的代码所做的是:

  • 以读取模式打开CSV文件,如果文件成功打开,它将进入循环
  • 然后,它将开始逐行读取(考虑到行长度不超过1000),直到文件结束。第三个参数
    是分隔符
  • 输出变量
    $data
    将包含从当前行读取的值,即它将保存用户帐户id和状态
  • 然后运行MySQL查询来更新数据库
  • 最后关闭打开的CSV文件
  • 现在,忠告:

    您直接将从CSV文件读取的值传递到纯SQL查询中,这样做可能会导致不必要的错误,最糟糕的是

    我建议对从CSV文件读取的数据执行某种输入验证,然后使用


    此外,您正在使用MySQL函数,这些函数现在已被删除。使用或。

    这是使用手册。代码看起来并不是不合理的。谢谢你的建议和解释。我想我做错了。我有两个表,表a有'status'和表b有'f22',如果f22=0,我想将表a的status更新为'5',它们都有user_id-我已经读到,我可以不用连接表就可以这样做,但是不能让它在循环中工作,根据user_id查询
    表b
    ,并获得f22的值,如果f22的值是0,然后在
    表a
    上运行查询,将该用户id的状态更新为5。你需要这方面的示例代码吗?