簡體   English   中英

Joomla-使用來自另一個SELECT查詢的變量更新表字段

[英]Joomla - Updating a table field with variable from another SELECT query

我的網站在Joomla 1.5.26中運行,我正在使用SELECT查詢將文件名路徑轉換為上次修改日期並在頁面中打印內容:

$db =& JFactory::getDBO();
$query = "
SELECT `filename`
FROM `#__joomlatable`
WHERE `filename` != '';
";
$db->setQuery($query);
$options = $db->loadAssocList();
foreach ( $options as $o ) {
if (file_exists($o[filename])) {
    echo date ("F d Y H:i:s.", filemtime($o[filename]));
    $test = date ("F d Y H:i:s.", filemtime($o[filename]));

}
}

如您所見,我正在屏幕上打印各種日期,同時將日期分配給值$ test

我的表還包含一個名為date的字段,其中包含空值。 我想做的是在表中的日期字段值中填充%test的值。

因此,在第一段代碼之后,我寫了:

$db2 =& JFactory::getDBO();
$query2 = "
UPDATE `#__joomlatable`
SET `date` = '$test'
WHERE `filename` != '';
";
$db2->setQuery($query2);
$options2 = $db2->loadAssocList();

但是它所做的是用相同的日期值填充所有記錄中的日期列,該日期值似乎是第一個查詢請求的最后一個日期值。 我認為它必須處於循環中,但是由於我對PHP / Mysql的經驗不足,所以我什么也沒想到。

你能幫忙嗎?

實際上,您需要對結果進行循環並分別更新每個文件記錄。

代碼如下所示:

$db =& JFactory::getDBO();
$query = "
SELECT `filename`
FROM `#__joomlatable`
WHERE `filename` != '';
";
$db->setQuery($query);
$options = $db->loadAssocList();

$fileInfo = array();

//store in fileInfo the modified time for each file
foreach ( $options as $o ) {
    if (file_exists($o['filename'])) {
        $fileInfo[ $o['filename'] = filetime( $o['filename'] );
    }
}

//now for each file we found we store the modified time in the database
foreach( $fileInfo as $filename => $time ){
    $query2 = "
    UPDATE `#__joomlatable`
    SET `date` = '$time'
    WHERE `filename` = '$filename';
    ";
    $db2->setQuery($query2);
    $options2 = $db2->query(); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM