[英]update query not working in joomla
我正在开发joomla扩展,并尝试使用模型中的以下代码更新joomla扩展数据库表中的条目:
$this->_db->setQuery(
$this->_db->getQuery(true)
->update('#__my_table')
->set('position=position+1')
);
$dbres = $this->_db->result();
但是,它什么也不做,也不输出任何错误(全局配置中的最大开发和错误报告)
我直接在PHPmyAdmin中输入查询:
UPDATE cprn7_my_table SET position=position+1
它可以正常工作。 我读过有关用$this->_db->quoteName()
左右引用键和值的信息,但是我找不到像SET position=position+1
这样的查询但仅使用SET position=$newval
这样的查询示例,所以我没有不知道确切引用什么以及如何引用。
//编辑:发现错误,它必须是$this->_db->query()
而不是$this->_db->result()
我想到了一些可能性。 第一个是启用--safe-updates
设置,以防止其WHERE
子句缺少主键列规范的更新(和删除)。
phpMyAdmin可能会关闭此设置,而您的默认MySQL客户端设置(在[client]
下的my.cnf
)可能会启用它。 您可以使用show variables
语句来发现设置的值。 另外,请参阅此文档以获取更多信息: http : //dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html#option_mysql_safe-updates
再想一想:您可以使用反引号将列名引起来,例如:
SET `position`=`position` + 1
但是,如果这似乎仍然没有效果,并且,如果您的服务器具有管理员级别的MySQL帐户,则可以打开常规登录,然后运行查询,然后再次将其关闭,然后检查结果。 有关使用--general-log
和相关设置的信息, --general-log
文档: http : --general-log
顺便说一句,如果您的MySQL客户端提供程序(或Joomla或混合中的任何其他层)正在使用SET
命令(即,在连接时)设置--safe-updates
,则您还将在常规日志中将其视为已执行的语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.