我刚刚开始使用PHP& amp; MYSQL。我想创建一个CSV文件导入器,然后将条目写入数据库,但具有各种验证。我想在datetime列中添加当前时间和日期,其中当数据库显示“是”时停止的任何产品将发布产品停止的日期和时间。我还想将条目添加到各种错误条件的PDF文件/报告格式中。错误将包括未通过if条件(如正则表达式)且未添加到数据库的任何条目。
<?php
include_once('connection.php');
date_default_timezone_set('Europe/London');
$date = date('d/m/y h:i:s a', time());
$filetxt = "./errors.txt";
$var1 = 5;
$var2 = 1000;
$var3 = 10;
if(isset($_POST["Import"]))
{
echo $filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0)
{
$file = fopen($filename, "r");
while(($emapData = fgetcsv($file, 10000, ",")) !==FALSE)
{
// adds data to the sql database
if($var1 <= $emapData[3] && $var3 <= $emapData[4] && $var2 >= $emapData[4] && preg_match("/^[a-zA-Z0-9]+$/", $value) == $emapData[1] && preg_match("[a-zA-Z]", $value) == $emapData[2] && preg_match("[a-zA-Z]", $value) == $emapData[6]){
$sql = "INSERT INTO tblproductdata(strProductCode, strProductName, strProductDesc, intStock, intPrice, dtmAdded, dtmDiscontinued) VALUES('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]','$emapData[4]','$date','$date')";
echo "test 1";
}
else if($var1 <= $emapData[3] && $var3 <= $emapData[4] && $var2 >= $emapData[4] && preg_match("/^[a-zA-Z0-9]+$/", $value) == $emapData[1] && preg_match("[a-zA-Z]", $value) == $emapData[2] && preg_match("[\s]", $value) == $emapData[6]){
$sql = "INSERT INTO tblproductdata(strProductCode, strProductName, strProductDesc, intStock, intPrice, dtmAdded, dtmDiscontinued) VALUES('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]','$emapData[4]','null','null')";
echo "test 2";
}
else{
$write = "$emapData[0], $emapData[1], $emapData[2], $emapData[3], $emapData[4], $emapData[5], $emapData[6], $emapData[7]\n\n";
file_put_contents($filetxt , $write , FILE_APPEND);
}
$res=$conn->query($sql);
}
echo "$sql";
fclose($file);
echo "CSV File has successfully been Imported";
}
else
{
echo "Invalid File: Please Upload a Valid CSV File";
}
}
header("Location: index.php");
?>
我特别需要帮助将不成功的数据库条目添加到PDF。
答案 0 :(得分:1)
存储当前日期和时间
MySQL支持two different formats来存储带有时间,日期时间和时间戳的日期。我将在此处显示带时间戳的示例。
每当插入一行时,您也可以告诉MySQL使用当前日期和时间填充您的字段(阅读更多here)。用于创建表的SQL看起来有点像这样:
CREATE TABLE test (
name CHAR(30),
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
如果在未设置时间值的情况下插入表格,则会设置当前时间:
INSERT INTO(name) VALUES("some text")
您也可以手动设置值:
INSERT INTO(name, time) VALUES("some text", CURRENT_TIMESTAMP)
写入PDF
看看FPDF。但是,对于只写错误日志,普通文本文件会更简单,也许更合适。