2014-04-26 52 views
-1

我未能将日期值插入到数据库中。它总是显示我"0000-00-00",我设定的日期结构是日期,它是一个"yyyy-mm-dd"。我试图调试我的查询,除了日期值不能插入到数据库中,一切都可以。我的代码有错吗?无法使用php将日期插入到数据库中

这里是我的代码:

$from = $_POST['from']; 

$newFrom = date("Y-m-d",strtotime($from)); 
// Get default database object 
$db = JFactory::getDBO(); 

// Get a new JDatabaseQuery object 
$query = $db->getQuery(true); 

$tmpIds = array(); 

foreach($courseID as $cId) { 
    $tmpIds[] = $db->quote($cId); 
    //sanitize the input 
} 

$courseID1 = implode(',',$tmpIds); 

// Build the query 
$query->select($db->quoteName('courseid')); 
$query->from($db->quoteName('intake')); 
$query->where($db->quoteName('campusid').'='. $db->quote($campusID)); 

$query->where($db->quoteName('courseid').'IN('.$courseID1.')'); 

// Set the query for the DB oject to execute 
$db->setQuery($query); 
// Get the DB object to load the results as a list of objects 
$results = $db->loadObjectList(); 

if($results){ 

    $query = "UPDATE intake SET startdate = $newFrom WHERE campusid = '$campusID'"; 
    echo "$query"; 
    $db->setQuery($query); 
    $db->query(); 

} 

else{ echo 'Error';} 

} 
+0

的var_dump($ newFrom); – underscore

+0

数据库中“startdate”字段的类型是什么? –

+0

由于您正在处理字符串,因此将您的变量放在引号'SET startdate ='$ newFrom''中。 –

回答

3

你错过了周围的日期字符串引号:

$query = "UPDATE intake SET startdate = $newFrom WHERE campusid = '$campusID'"; 

应该是:

$query = "UPDATE intake SET startdate = '$newFrom' WHERE campusid = '$campusID'"; 
+0

我在我的评论中按下了“Enter”,就像这样出现;-) –

+0

如果db中的字段是DAte/Time类型,那么它不是必需的 –

+0

哦,是的,我们正在处理一个字符串而不是一个整数,这是必要的@ pc-shooter。否则,它将被解释为一个数学方程。 'Y-m-d' - 年份减去月份,减去日期。 –

相关问题