好的,所以我尝试使用phpjobscheduler每天更新统计信息,它每天运行一个命令来打开php页面并更新数据库。我已经谷歌搜索过,这是我到目前为止管理的代码:
<?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 文件中的数据更新数据库。
您需要
转义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);
在开发时纠正错误。