我遇到了一个我试图创建的脚本的问题,它更新了joomla cms网站中的一些参数。如果我在phpmyadmin中进行更新,然后按go说:
UPDATE `websit52_rcsetch`.`u5b0y_modules` SET `params` = '{"moduleclass_sfx":"demovideos","youtube_id":"XM0aLFaij8I3","width":"300","height":"200","responsive":"1","cache":"1","cache_time":"900","cachemode":"itemid"}' WHERE `u5b0y_modules`.`id` =192;
所以我想,好吧我只是复制该查询并将其放入php并将params更改为我需要的内容。
最终得到:
mysql_query("UPDATE `websit52_rcsetch`.`u5b0y_modules` SET `params` = '{"moduleclass_sfx":"demovideos","youtube_id":"XM0aLFaij8I3","width":"300","height":"200","responsive":"1","cache":"1","cache_time":"900","cachemode":"itemid"}' WHERE `u5b0y_modules`.`id` =192;")or die(mysql_error());
现在问题出现在Dreamweaver的那一行我在该行上收到一个红色错误警告,但我所做的只是将查询复制到mysqli查询中,所以无法理解为什么它不起作用?它说有一个语法错误,我认为是由params使用的双引号引起的,但是我不确定我是否可以在不影响查询的情况下逃避这些?或者是否还有其他原因导致问题?
答案 0 :(得分:3)
mysql_query("UPDATE `websit52_rcsetch`.`u5b0y_modules` SET `params` = '{\"moduleclass_sfx\":\"demovideos\",\"youtube_id\":\"XM0aLFaij8I3\",\"width\":\"300",\"height":\"200\",\"responsive\":\"1\",\"cache\":\"1\",\"cache_time\":\"900\",\"cachemode\":\"itemid\"}' WHERE `u5b0y_modules`.`id` =192;")or die(mysql_error());
在Joomla synthax中:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('params') . ' = ' . $db->quote('{"moduleclass_sfx":"demovideos","youtube_id":"XM0aLFaij8I3","width":"300","height":"200","responsive":"1","cache":"1","cache_time":"900","cachemode":"itemid"}')
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('id') . ' = 192'
);
$query->update($db->quoteName('#__modules'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->query();