php - 加载数据本地 infile 写入数据库时​​遇到问题

标签 php mysql csv

我是 php 和 mysqli 的新手,正在尝试为我玩的游戏建立一个统计网站。简而言之,此代码 1) 由用户(通过 URL)查找最后 X 架次(此处为 1,但可以更改为任何数字),2) Curl 的结果,3) 将其放入/tmp/sorties.csv,然后4)将数据本地infle/tmp/sortie.csv加载到我的数据库。

它确实连接到数据库(成员表)并按成员/玩家名称(回显“更新”)以及游戏信息(显示在游戏数据库中拥有数据的每个玩家 1 次出击)进行查找) --我已经注释掉了标题,以便查看回显的内容。

我的网站由第三方托管,但使用的是 sql 5.5.32、php 5.3.13,并且是 Linux/Debian 平台。非常感谢任何(和所有)帮助,实际上我是通过使用此处提供的一些问题和答案来编写本文的绝大多数内容的。我确实有这个代码的唯一 MySQL 版本,它也有同样的错误(两天前开始不工作),我希望更新到 mysqli 能够纠正这个问题。数据库字段在数量和数据类型上都匹配。

include 'Data/openi.php';

//Collect player name info
$query = "SELECT name FROM Members";
$result=$link->query($query); 

// Array
$rows = array();
    while($row = $result->fetch_array()) 
        {
          $rows[] =$row['name'];
        }

// collect sortie data
foreach ($rows as $player) 
{ 
$url = "http://myurlforlookup.php?username=".$player."&startsortie=0&sortiecount=1";
$path = '/tmp/sortie.csv' ;
// echo Player name -- works
echo "<br /><br />Updating for ".$player."<br />" ; 

//Curl to tmp file (aka $path)    
$ch = curl_init($url);
 if($ch === false)
     {
     die('Failed to create curl handle');
     }
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $result=curl_exec($ch);
 if(!curl_exec($ch))
    {
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
    }
 curl_close($ch);
 file_put_contents($path,$result );

//show sortie (post Curl) data on screen -- Works 
 echo $result  ;

// Input to the database -- Not working
 
 $sqli = "LOAD DATA LOCAL INFILE '/tmp/sortie.csv'
                 INTO TABLE Sorties
                 FIELDS TERMINATED BY ','
                 OPTIONALLY ENCLOSED BY '\''
                 LINES TERMINATED BY '\n'
                 " ;

$done=$link->query($sqli);
if (!$done) echo mysqli_error($sqli);
/*if (mysql_affected_rows() >= 1) {
 $message = "The user was successfully updated!";
 }
 else
 {
 $message = "</br>The user update failed:</br> ";
 $message .= mysql_error();
 }

 echo $message;
*/

} 
$result->close();
$link->close();
return $rows;

最佳答案

你能相信吗 - 当我在这个网站上挖掘一个完全不同的问题时,我喜欢这个问题 "Load data local infile" command not allowed

当我根据此处的建议调整 SQLi 连接字符串时,我的代码神奇地工作了......有点有趣......喜欢寻找解决方案。不过,如果有人对优化有意见,我也愿意接受这些建议

关于php - 加载数据本地 infile 写入数据库时​​遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173967/

相关文章:

php - Laravel:InvalidArgumentException:数据库 [mysql] 未配置

php - 如何使用 Unix 命令或 php 获取与给定 ip 地址关联的所有域?

Mysql - 如果同一表的其他行中不存在值,则更新行

python - django 在以管理表单保存时减少了毫秒数

php - SQL 查询似乎不起作用

php - 不能使用函数返回值

php - 如何在 codeigniter 事件记录中返回带有 oder_by 计数的数据

php - 如何将 json block 转换为 CSV 文件?

c# - 将数据解析为 C++ 二维 map

Java hashmap 找不到现有条目