Php 如何在数据库中设置无限制-codeigniter

Php 如何在数据库中设置无限制-codeigniter,php,html,mysql,sql,codeigniter,Php,Html,Mysql,Sql,Codeigniter,我使用它从数据库中获取结果,但它限制为1条记录 我不想要任何限制;我试着把它取下来,但没用 $this->db->from('links'); $this->db->where('uniq', $nnn[0]->uniq); $this->db->limit(1); $q = $this->db->get(); $nnn[0]->linkos=$q->result()[0]; return $nnn; CodeIgniter

我使用它从数据库中获取结果,但它限制为1条记录

我不想要任何限制;我试着把它取下来,但没用

$this->db->from('links');
$this->db->where('uniq', $nnn[0]->uniq);
$this->db->limit(1);
$q = $this->db->get(); 
$nnn[0]->linkos=$q->result()[0];
return $nnn;
  • CodeIgniter中的
    $q->result()
    方法返回一个对象(尝试使用$q->result\u array()将结果集作为数组返回)
  • 在我看来,将[0]附加到$q->result()方法就像是将结果集(无论是对象还是数组)仅限于第一项
因此,省略[0]部分似乎是我在您的案例中尝试的第一步:

$nnn[0]->linkos=$q->result();
回避:

  • 考虑使用
    $this->db->query(“从表中选择*”)
    检索结果集。它使您能够更好地控制实际执行的查询,以获取行。它还可以减轻调试的痛苦
  • 此外,在代码中显式地使用SQL语句还有以下好处:
    • 代码可移植性
    • 可能有一天要接手的同事或其他开发人员,他们与CodeIgniter的经验水平与您不同

如果删除此行会发生什么
$this->db->limit(1)?不工作,我的意思是不影响任何内容,请尝试打印sql查询,并检查生成的最终查询是什么。如果列
uniq
等于
$nnn[0]->uniq
的值,则数据库中有多少个结果?删除:$this->db->limit(1);更新:from:$nnn[0]->linkos=$q->result()[0];to:$nnn[0]->linkos=$q->result();忽略[0]-不工作,在它只获得1的数据之前,在删除o之后,它不会获得任何数据,并且我正在使用一个复杂的系统,如果我改变任何东西都需要改变,所以如果你能给我这个代码的任何修复,而不做太多改变,那将是非常好的。你能再描述一下你的用例吗?开始的情况是什么?你为什么要查询数据库,你想用结果实现什么?还有一些表的DDL也不错。我使用的代码只给出了一行的结果,其他行我无法得到。现在主要的事情是通过uniue它连接两个不同的东西,uniq作为到数据之间的关系工作(意味着uniq在两者中是相同的)。我认为限制将在WHERE子句中设置,该子句在
$this->db->WHERE('uniq',$nnn[0]->uniq)中设置语句。也许您可以先检查
$nnn
-数组中第一个对象的
uniq
属性的值。看看有没有道理。如果确实如此,请尝试运行显式SQL语句,与CodeIgniter分开;也许你有一个MySQL提示符可用。仔细想想,第二行(包含WHERE子句)似乎应该将结果集限制为仅一行(预期行为)。第三行似乎是额外的安全措施。@RvT-说
result()
返回一个对象是错误的。它返回一个数组——一个对象数组<代码>结果数组()
返回和数组的数组。