我会围成一圈,请有人帮忙解决我认为相对容易的问题。
我有一个包含1200个用户的表。 表db_user_accounts中的一个字段是' status' 我有一个csv中这些用户的子列表,我想设置' status'到' 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的用途是什么,或者这实际上是否有用。 任何建议都感激不尽 感谢
答案 0 :(得分:0)
这段代码似乎很好,应该可行。 1000是该行的长度,如PHP手册(引用如下):
价:http://php.net/manual/en/function.fgetcsv.php
必须大于要找到的最长行(以字符为单位) CSV文件(允许尾随行尾字符)。除此以外, 除非拆分,否则该行将被拆分为长度为字符的块 会发生在一个外壳内。
省略此参数(或在PHP 5.1.0及更高版本中将其设置为0) 最大线长度不受限制,稍微慢一些。
您的代码的作用是:
,
是分隔符。$data
将包含从当前行读取的值,即它将保留用户帐户ID和状态。现在,建议:
您直接将从CSV文件读取的值传递给纯SQL查询,这样做可能会导致意外错误,最差SQL injection
我建议对从CSV文件读取的数据执行某种输入验证,然后使用parameterized SQL query。
此外,您正在使用deprecated的MySQL函数。使用Mysqli或PDO。