gpt4 book ai didi

Mysql 从 csv 数据更新命令

转载 作者:行者123 更新时间:2023-11-29 17:33:07 27 4
gpt4 key购买 nike

我在兜圈子,请有人帮忙解决我认为相对简单的问题。

我有一个包含 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 手册(引用如下):

引用号:http://php.net/manual/en/function.fgetcsv.php

Must be greater than the longest line (in characters) to be found in the CSV file (allowing for trailing line-end characters). Otherwise, the line is split into chunks of length characters unless the split would occur inside an enclosure.

Omitting this parameter (or setting it to 0 in PHP 5.1.0 and later) the maximum line length is not limited, which is slightly slower.

您的代码的作用是:

  1. 以读取模式打开CSV文件,如果文件打开成功则进入循环
  2. 然后它将开始逐行读取(考虑行长度最多为 1000),直到文件末尾。第三个参数,是分隔符。
  3. 输出变量 $data 将包含从当前行读取的值,即它将保存用户帐户 ID 和状态。
  4. 然后您将运行 MySQL 查询来更新数据库。
  5. 最后关闭打开的 CSV 文件。

现在,建议:

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

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

此外,您正在使用 MySQL 函数 deprecated现在。使用 MysqliPDO .

关于Mysql 从 csv 数据更新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com