我尝试使用以下代码将上传页面插入到我的数据库中:
if($file!=="")
{
echo "<br/>".$file;
$handle = fopen($file, "r");
$row = 0;
$delete_records = mysql_query("DELETE FROM affiliationagreements");
$delete_records = mysql_query("DELETE FROM college");
$delete_records = mysql_query("DELETE FROM program");
$delete_records = mysql_query("DELETE FROM facility");
$delete_records = mysql_query("DELETE FROM submitor");
$delete_records = mysql_query("DELETE FROM location");
//will loop each record in the CSV file
while(($fileop = fgetcsv($handle,1000,",")) !== false )
{
//columns names of the CSV file are not needed
if($row==0)
{
$row++;
}
else
{
//accept apostrophes in the strings
$fileop = array_map("mysql_real_escape_string",$fileop);
$sql = mysql_query("INSERT INTO affiliationagreements(id, AANumber, Facility, Submitor, Program, Location, College, SubmissionDate, Action, EffectiveDate, Status, ExpirationDate)
VALUES('',
'$fileop[0]',
'$fileop[1]',
'$fileop[2]',
'$fileop[3]',
'$fileop[4]',
'$fileop[5]',
'$fileop[11]',
'$fileop[23]',
'$fileop[24]',
'$fileop[25]',
'$fileop[26]')
")or die(mysql_error());
要提供示例,当我上传我的CSV文件以添加值时,我会在控制台中将它们打印出来,并看到正确读取值并且它们是正确的。但是,一旦我的PHP脚本结束并返回主页面,我的日期都是空的。它们都不是csv文件中反映的值。这是我的数据库的架构:
CREATE TABLE `affiliationagreements` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`AANumber` varchar(20) DEFAULT NULL,
`Facility` varchar(150) DEFAULT NULL,
`Submitor` varchar(50) DEFAULT NULL,
`Program` varchar(60) DEFAULT NULL,
`Location` varchar(50) DEFAULT NULL,
`College` varchar(50) DEFAULT NULL,
`SubmissionDate` date DEFAULT NULL,
`Action` varchar(50) DEFAULT NULL,
`EffectiveDate` date DEFAULT NULL,
`Status` varchar(50) DEFAULT NULL,
`ExpirationDate` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
如果我将SubmissionDate,EffectiveDate和ExpirationDate更改为varchar,它们会正确插入但我无法使用varchar,因为我正在比较日期值。和建议?
***更新。在CSV文件中,格式为MM / DD / YYYY。我不认为这会是一个问题。改变这个会更好吗?而且我删除了记录,因为我的老板希望在文件重新上传之前清除数据库,因为上传的文件是之前上传的文件的更新。 ****
答案 0 :(得分:1)
检查您的日期格式,因为MySql需要采用YYYY-MM-DD格式
INSERT INTO table SET date = '2014-05-13'
如果你有不同的格式,日期将存储&#39; 0000-00-00&#39;代替。因此,在运行查询之前,请通过回显查询字符串来仔细检查插入。
答案 1 :(得分:0)
mysql date
字段仅接受此格式的日期:0000-00-00
您可以在插入查询中使用DATE_FORMAT()
但我无法提供问题,因为您没有发布实际日期的格式。