Php 从Codeigniter查询中获取正确的数据?
我目前正在尝试使用codeigniter active record从我的数据库中获取一个数组,这是我经常做的事情,但我目前在获取正确的数据时遇到了问题 有4条记录应该从我的模型返回给我的控制器。此时,将返回表中的所有记录 我在查询中使用了一个Php 从Codeigniter查询中获取正确的数据?,php,mysql,arrays,codeigniter,Php,Mysql,Arrays,Codeigniter,我目前正在尝试使用codeigniter active record从我的数据库中获取一个数组,这是我经常做的事情,但我目前在获取正确的数据时遇到了问题 有4条记录应该从我的模型返回给我的控制器。此时,将返回表中的所有记录 我在查询中使用了一个foreach循环,因为查询where/或\u where子句可以是多个值。这就是问题所在,因为我认为它绕过了foreach和get的所有记录,而没有查看where子句 我的问题是关于第二个例子的问题是什么 工作 以下代码获取所需的4条应返回的记录: pu
foreach
循环,因为查询where
/或\u where
子句可以是多个值。这就是问题所在,因为我认为它绕过了foreach和get的所有记录,而没有查看where子句
我的问题是关于第二个例子的问题是什么
工作
以下代码获取所需的4条应返回的记录:
public function get_most_relevant($user){
$categories = $this->get_users_most_common_categories($user);
$this->db->order_by('posts.date_created','DESC');
$this->db->limit(25);
$this->db->select('*');
$this->db->from('posts');
$this->db->select('posts.image_name as post_image');
$this->db->select('posts.random_string as post_string');
$this->db->select('posts.date_created as post_creation');
$this->db->join('users', 'posts.user_string = users.random_string','left');
$this->db->where('category_string', 'cCU8oEQHYLWP');
$this->db->or_where('category_string', '8RfRDWrG5QB7');
$posts = $this->db->get();
return $posts;
}
不工作
以下代码从表中获取所有记录:
public function get_most_relevant($user){
$categories = $this->get_users_most_common_categories($user);
$this->db->order_by('posts.date_created','DESC');
$this->db->limit(25);
$this->db->select('*');
$this->db->from('posts');
$this->db->select('posts.image_name as post_image');
$this->db->select('posts.random_string as post_string');
$this->db->select('posts.date_created as post_creation');
$this->db->join('users', 'posts.user_string = users.random_string','left');
$this->db->where('category_string', 'cCU8oEQHYLWP');
$this->db->or_where('category_string', '8RfRDWrG5QB7');
$posts = $this->db->get();
return $posts;
}
它似乎绕过了foreach
,直接进入get()
$this->get_users_most_common_categories($user)code
public function get_users_most_common_categories($user){
$categories = $this->db->query("SELECT category_string, COUNT(category_string) AS category_occurence FROM views WHERE user_string = '".$user."' OR ip_address = '".$user."' GROUP BY category_string ORDER BY category_occurence DESC");
return $categories;
}
$this->get\u users\u most\u common\u categories($user)return
Array
(
[0] => Array
(
[category_string] => cCU8oEQHYLWP
[category_occurence] => 3
)
[1] => Array
(
[category_string] => 8RfRDWrG5QB7
[category_occurence] => 1
)
)
查询输出
选择*,posts
image\u name
作为post\u图像,posts
random\u string
作为post\u字符串,posts
作为post\u创建的日期(posts
)左键连接用户
在帖子上用户字符串
用户
随机字符串其中类别字符串
='cCU8oEQHYLWP'和发布
='1'或类别字符串
='8RfRDWrG5QB7'或发布
='1'顺序由帖子创建
描述限制25
提前感谢您的帮助,非常感谢。您可以使用CI DB驱动程序的上次查询功能来查找查询中的错误。它返回上次运行的SQL字符串。然后,您可以在数据库客户机中执行该查询,并对其进行调整,直到得到所需的结果
$posts = $this->db->get();
$sql = $this->db->last_query();
echo $sql;
这可能是一个错误。您可以尝试将查询的这一部分编写为字符串,您可以将其传递到
where
和或\u where
:
foreach($categories->result_array() as $category){
$query = "(category_string = ".$category['category_string']." AND published = '1')";
if($i == 0){
$this->db->where($query);
}else{
$this->db->or_where($query);
}
$i++;
}
…-查看第4部分自定义字符串
$categories->result_array()
返回非空数组的位置?@DavidNormington不确定非空数组是什么意思,但查看我的编辑,谢谢。@DavidNormington它似乎在添加或而不是和之间的'category\u string'='8RfRDWrG5QB7'或'published'='1'
,你能看看我添加查询的编辑吗?可能是个bug。您可以尝试将查询的该部分写入字符串,您可以将其传递到where
和或
:$this->db->where(“((category\u string=“.category['category\u string']”和published='1')代码>-请参阅其中
第4部分自定义字符串。@DavidNormington这正是它的原意,但我现在已使查询工作正常,这让我很高兴。请随意创建一个答案,我会接受的,谢谢。它似乎是在添加一个或而不是和之间的'category\u string'='8RfRDWrG5QB7'或'published'='1'
,你能看看我在哪里添加了查询的编辑吗?不要使用$this->db->或
使用$this->db->where()