2014-04-26 55 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' - 年份減去月份,減去日期。 –

相關問題