gpt4 book ai didi

php - mysql通过php脚本加载数据infile - 不工作

转载 作者:行者123 更新时间:2023-11-29 01:16:35 24 4
gpt4 key购买 nike

我正在尝试使用 mysql LOAD DATA LOCAL INFILE 通过使用 mysqli 的 php 脚本将一些 csv 数据导入我的 mysql 数据库。这是我的 sql 字符串的样子:

LOAD DATA LOCAL INFILE '/var/www/html/dashmaker/uploads/HHdata.csv' INTO TABLE dashmaker.HHdata FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;

这是我的 php 脚本的样子:

$sql = "LOAD DATA LOCAL INFILE '/var/www/html/dashmaker/uploads/HHdata.csv'
INTO TABLE dashmaker.HHdata
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;";

$con=mysqli_connect("localhost","[user]","[password]","[database]");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};

$result = mysqli_query($sql, $con);

if (mysql_affected_rows() == 1) {
$message = "The data was successfully added!";
} else {
$message = "The user update failed: ";
$message .= mysql_error();
};

echo $message;

mysqli_close($con);

我发现我需要设置 mysql my.cnf 以在 [mysql] 和 [mysqld] 下包含 local-infile - 所以我已经这样做了。

当我通过 shell 运行 sql 查询时,它起作用了。当我尝试通过 php 脚本执行此操作时,我现在收到错误消息 ($message):

The user update failed: Access denied for user ''@'localhost' (using password: NO) 

一件奇怪的事情是它在@'localhost' 之前没有显示任何用户名。不明白为什么。除此之外,我使用相同的连接设置来使用 PHP 脚本从数据库运行常规的 SELECT 查询。用户还具有 FILE 权限。

我进行了广泛的搜索,但没有找到任何可以解释发生了什么的东西。任何建议将不胜感激。

最佳答案

在某些情况下,您将 MySQL API 与 mysql_mysqli_ 函数混合使用。

  • mysql_affected_rows()
  • mysql_error()

它们不会混合在一起;使用 mysqli_ 独占

另外,您没有在 [user] 等中使用括号,对吗?那是 MSSQL 语法,删除它们。

此外,在 mysqli_ 中,数据库连接在前,将这些 $result = mysqli_query($sql, $con); 反转为 $result = mysqli_query($con, $sql);

$sql = "LOAD DATA LOCAL INFILE '/var/www/html/dashmaker/uploads/HHdata.csv'
INTO TABLE dashmaker.HHdata
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;";

$con=mysqli_connect("localhost","user","password","database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};

$result = mysqli_query($con, $sql);

if (mysqli_affected_rows($con) == 1) {
$message = "The data was successfully added!";
} else {
$message = "The user update failed: ";
$message .= mysqli_error($con);
};

echo $message;
mysqli_close($con);

关于php - mysql通过php脚本加载数据infile - 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26250119/

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