好的,所以即时尝试使用phpjobscheduler每天更新统计数据,它每天运行一个命令来打开php页面并更新数据库。 我用Googled这是我到目前为止管理的代码:
<?php
$mysqli = new mysqli('localhost','xxxxx','xxxxx','xxxxx');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "LOAD DATA LOCAL INFILE 'xxxxx.CSV' REPLACE INTO TABLE `Stats_Day` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (@txdate, department, code, descript, QTY, Total) SET txdate = STR_TO_DATE(@txdate, '%Y/%m/%d')";
$res = $mysqli->query($query);
if ($mysqli->error) {
try {
throw new Exception("MySQL error $mysqli->error <br> Query:<br> $query", $msqli->errno);
} catch(Exception $e ) {
echo "Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >";
echo nl2br($e->getTraceAsString());
}
}
mysqli_close($con);
?>
然而这不起作用它给了我一个空白页面, 并没有在SQL数据库上更新? 它连接到数据库 (输入错误的详细信息,显示错误的用户详细信息)
但是没有更新数据库?并且没有显示错误?
请帮忙? 我需要做的就是每天凌晨1点用.csv文件中的数据更新数据库。
答案 0 :(得分:0)
您需要在ENCLOSED BY
部分转义双引号。没有它,你终止了你的字符串。
$query = "LOAD DATA LOCAL INFILE 'xxxxx.CSV' REPLACE INTO TABLE `Stats_Day` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES (@txdate, department, code, descript, QTY, Total) SET txdate = STR_TO_DATE(@txdate, '%Y/%m/%d')";
注意强>
error_reporting(E_ALL)
和ini_set('display_errors', 1);
来解决您的错误。