gpt4 book ai didi

mysql - 加载文件 infile 期间生成随机字段

转载 作者:行者123 更新时间:2023-11-29 10:59:21 25 4
gpt4 key购买 nike

我在导入 .csv 文件时尝试生成一个名为 Access 的随机字母数字字段。 .csv 文件有 3 个字段:First_Name、Last_Name、Email。我的 MYSQL 表有 4 个字段:First_Name、Last_Name、Email、Access。我需要在导入过程中添加第四个字段,称为 Access,它可以是随机字母数字。这是我到目前为止所想出的。

//get the csv file 
$file = $_FILES[csv][tmp_name];
$handle = @fopen($file,"r");

//loop through the csv file and insert into database

if ($_FILES[csv][size] > 0) {

$access2 = random_password_length(15);

$temp = $_FILES['csv']['tmp_name'];

$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE sendit_emails
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
(@First_Name, @Last_Name, @Email, @Access)
SET First_Name=@First_Name, Last_Name=@Last_Name,
Email=@Email, '$access2'=@Access";

在 PHP 页面的底部,我声明了 random_password 的函数:

<?php
function random_password_length($length = 15) {
$chars = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
$password = substr(str_shuffle($chars), 0, $length);
return $password;
}
?>

我在 @Access 附近遇到语法错误。任何帮助,将不胜感激。我也愿意尝试另一种技术。

最佳答案

您不需要用户变量。只需将 CSV 中的三列映射到三个相关的数据库列,然后使用 SET 语句设置第四列即可。

这样的东西应该适合你:

$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE sendit_emails   
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
(First_Name, Last_Name, Email)
SET Access='$access2'";

使用以下解决方案为每行导入不同的 Access 代码:假设您想使用现有的 15 个伪随机字母数字字符的方法,您可以在 MySQL 中执行此操作,如下所示: SET Access=upper(左(md5​​(rand()),15))

因此完整的查询将是:

$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE sendit_emails   
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
(First_Name, Last_Name, Email)
SET Access=upper(left(md5(rand()),15))

关于mysql - 加载文件 infile 期间生成随机字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42516593/

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