[英]save a field from one table to a PHP variable and used in another query
[英]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.