我在Codeigniter中遇到了一个奇怪的问题。我正在运行更新行的查询:
function set_counter($key, $value){
echo "$key : $value => ";
$this->db->query("UPDATE counter SET counter.`value` = ? WHERE counter.`key` = ?", array($value, $key));
return $this->db->affected_rows();
}
基准测试显示此函数被调用并且查询确实运行:
UPDATE counter SET counter.`value` = 1 WHERE counter.`key` = 'left_banner_start_id'
该函数返回'1',表示1行已更新。
但实际上该行未在数据库中更新,value
列始终为'0'
我做错了什么解决方案?
修改
问题变得更加怪异,当我退出()我的函数时,行实际上会更新,否则它不会:
function set_counter($key, $value){
echo "$key : $value - ";
$this->db->query("UPDATE counter SET counter.`value` = ? WHERE counter.`key` = ?", array($value, $key));
//print_r($this->db->affected_rows());
exit();
}
修改
好吧,如果我在system / core / Output.php中退出()执行,它会起作用:
// --------------------------------------------------------------------
// Does the controller contain a function named _output()?
// If so send the output there. Otherwise, echo it.
if (method_exists($CI, '_output'))
{
$CI->_output($output);
}
else
{
exit();
echo $output; // Send it to the browser!
}
但如果我在回显$ output后退出()它不起作用:
// --------------------------------------------------------------------
// Does the controller contain a function named _output()?
// If so send the output there. Otherwise, echo it.
if (method_exists($CI, '_output'))
{
$CI->_output($output);
}
else
{
echo $output; // Send it to the browser!
exit();
}
修改
在我看来,这条线阻止了它:
<img src="<?php echo base_url().$recent_ad['photo_thumb']; ?>" width="28" height="27" />
这个在另一个视图中:
<img src="<?php echo base_url().$featured_agent['photo_medium']; ?>" width="84" height="84" />
这里photo_thumb和photo_medium是数据库中另一个表中的列,它们具有空值。我填写了列,现在它工作正常。
但为什么呢?是什么原因?
答案 0 :(得分:0)
您是否尝试将代码切换为有效记录语法?
function set_counter($key, $value){
$this->db->where('key', $key)->update('counter', array('value' => $value));
return $this->db->affected_rows();
}