我有以下功能不起作用,我正在努力解决这个问题。我12岁,刚刚学习,原谅我:
function get_answer() {
$answer = $this->db->query("SELECT COUNT(questions) FROM possible_quest WHERE questions='something'");
return $answer;
}
当我在phpmyadmin中运行以下SQL查询时,它会返回预期的结果
SELECT COUNT(questions) FROM possible_quest WHERE questions='something'
如何使用上面的函数在CodeIgniter中使用它?
我得到的PHP错误是
遇到PHP错误 严重程度:4096
消息:类CI_DB_mysql_result的对象无法转换为字符串
答案 0 :(得分:4)
可能是:
function get_answer()
{
$query = $this->db->query("SELECT COUNT(questions) AS count FROM possible_quest WHERE questions='something'");
$count = $query->row(); // returns an object of the first row
return $count->count;
// OR
$count = $query->row_array(); // returns an asociative array of the result
return $count['count'];
}
另一件事:如果你想把'某事'作为变量传递,你可以使用参数化查询,比如
$sql = "SELECT COUNT(questions) AS count FROM possible_quest WHERE questions = ?";
$query = $this->db->query($sql, array($something));
它具有自动转义变量的好处,因此您不必担心sql注入。
答案 1 :(得分:1)
您需要设置计数。
你需要做的是
$answer = $this->db->query("SELECT COUNT(questions) as count FROM possible_quest WHERE questions='something'")->first_row()->count;
//$answer is now setup to be count
一行。这就是CI的美丽
答案 2 :(得分:0)
您获得的错误与$this->db->query
返回结果对象的事实有关,因此您不能将$answer
直接用作字符串。
如果您在模型中有这样的功能,我建议您使用print_r($answer)
来查看将对象转换为字符串可能出现的问题。
答案 3 :(得分:0)
您收到该错误是因为
return $answer;
应该是
return $answer->result();
答案 4 :(得分:0)
我建议您尽可能使用带有方法链接的Active Record:
public function getAnswer() {
return
$this->db->
select('id')->
where('questions', 'something')->
get('possible_quest')->row()->count
;
}
或
public function getAnswer() {
return
$this->db->
select('id')->
from('possible_quest')->
where('questions', 'something')->
get()->row()->count
;
}
它安全,易于使用,易于理解和阅读。不要听人们说单行代码是好的,因为好的代码应该是可读的。
答案 5 :(得分:0)
CodeIgniter具有构建查询和返回计数的功能:
function get_answer() {
$this->db->from("possible_quest");
$this->db->where("questions", "something");
return $this->db->count_all_results();
}
注意:“get_answer”函数的名称与您实际执行的名称不匹配。看起来你得到了一些问题,而不是一个答案,所以你应该把它命名为更有意义的东西,比如'get_question_count'。