【问题标题】:How to put no limit in database- codeigniter如何在数据库中不受限制-codeigniter
【发布时间】:2018-04-21 19:01:24
【问题描述】:

我正在使用它从数据库中获取结果,但它限制为 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;

【问题讨论】:

  • 如果你删除这行$this->db->limit(1);会发生什么?
  • 不工作,我的意思是不影响任何事情,
  • 尝试打印 sql 查询,并检查生成的最终查询是什么。 stackoverflow.com/questions/6142099/…
  • 数据库中有多少结果,其中uniq 列等于$nnn[0]->uniq 的值?
  • 删除:$this->db->limit(1);更新:来自:$nnn[0]->linkos=$q->result()[0];到:$nnn[0]->linkos=$q->result();

标签: php html mysql sql codeigniter


【解决方案1】:
  • CodeIgniter 中的$q->result() 方法返回一个对象(尝试使用 $q->result_array() 将结果集作为数组返回)
  • [0] 附加到 $q->result() 方法在我看来就像是在限制结果集(无论是对象还是数组) , 仅到第一项。

因此,省略 [0] 部分似乎是我将在您的情况下尝试的第一步:

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

回避:

  • 考虑使用$this->db->query("SELECT * FROM table WHERE...") 检索您的结果集。它使您可以更好地控制执行的实际查询,以获取您的行。调试也需要一些麻烦。
  • 此外,将 SQL 语句显式放入您的代码中还有以下好处:
    • 代码可移植性
    • 同事或其他开发人员可能需要在某一天接手,但他们在 CodeIgniter 方面的经验与您不同

【讨论】:

  • 省略 [0] - 不起作用,在它只获得 1 的数据之前,在删除 o 之后它没有得到任何数据,如果我改变任何需要改变的东西,我正在使用一个复杂的系统全部,所以如果你能给我这个代码的任何修复,而不做太多改变会很棒
  • 您能否再描述一下您的用例?起步情况如何?为什么你必须查询数据库,你想用结果来实现什么?表格的一些 DDL 也会很好。
  • 我使用的代码只给我 1 行的结果,其他行我无法获得。现在主要是通过 uniue 它与 2 个不同的东西连接,uniq 作为数据之间的关系,(意味着 uniq 在两者中是相同的)。
  • 我认为限制会在WHERE子句中设置,在$this->db->where('uniq', $nnn[0]->uniq);语句中设置。也许您可以先尝试检查$nnn-array 中第一个对象的uniq 属性的值。看看有没有意义。如果是,请尝试运行显式 SQL 语句,与 CodeIgniter 分开;也许你有一个可用的 MySQL 提示符。考虑一下,似乎第二行(包含 WHERE 子句)应该将结果集限制为一行(预期行为)。第三行似乎是一项额外的安全措施。
  • @RvT - 你说result()返回一个对象是错误的。它返回一个数组 - 一个对象数组。 result_array() 返回和数组数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2011-08-29
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多