【问题标题】:SQL / PHP - only display the first value of my databaseSQL / PHP - 只显示我的数据库的第一个值
【发布时间】:2018-11-14 11:03:24
【问题描述】:

一切都在标题中。为什么我只得到表格的第一行而不是所有字段。

功能:

class Services_Label extends Services_Abstract
{
    public function getlibelle()
    {
        $sRequest = 'SELECT NAME FROM menu WHERE id_application = 2';
        $this->executeQueries($sRequest);
        $aResult = $this->getOneResult();
        $this->freeStatement();
        return $aResult;
     }
 }

功能应用:

$oMessage = new Services_Label();

$toto = $oMessage->getlibelle();

var_dump($toto);

答案:

string(15) "Prise en charge" 

表:

【问题讨论】:

  • 您只在查询中选择了NAME 列!如果您想要其他列,则必须将它们添加到列表中或使用 SELECT * 获取所有列
  • 函数'getOneResult()'是什么样子的?列名也会使表格更好。
  • 请考虑重新表述您的问题。在标题中,您要求仅显示一行。然后在问题中您说您想要获取所有字段(=列)。但我认为您真正想要的是从“名称”字段中获取所有行。如果我错了,请纠正我。
  • 你说得对,我想从字段名称中获取所有行,但没关系,我找到了答案!
  • 很高兴听到,但仍请考虑编辑问题并提供解决方案或至少标记使您走上正轨的答案。关键是其他人应该有可能从中得到一个好的答案。

标签: php sql oracle


【解决方案1】:

按照getOneResult() 的名称,您的结果集可能仅限于一个结果。

你能发布整个功能来确认吗?

【讨论】:

  • 使用id_application = 2 我有点希望只返回一行,但我承认它有点假设
  • @RiggsFolly 我假设最后一列包含 2 是 id_application 列。所以应该返回所有行。如果是这种情况,那么 getOneResult() 函数可能会进行一些额外的过滤。
【解决方案2】:

从您的问题中我不知道您的表格列被称为什么,但如果您希望所有列都使用SELECT *

class Services_Label extends Services_Abstract
{
    public function getlibelle()
    {
        $sRequest = 'SELECT * FROM menu WHERE id_application = 2';
        $this->executeQueries($sRequest);
        $aResult = $this->getOneResult();
        $this->freeStatement();
        return $aResult;
     }
 }

通常最好只命名您实际希望返回的列,这样您就可以这样做

class Services_Label extends Services_Abstract
{
    public function getlibelle()
    {
        $sRequest = 'SELECT NAME,COL2,COL3 FROM menu WHERE id_application = 2';
        $this->executeQueries($sRequest);
        $aResult = $this->getOneResult();
        $this->freeStatement();
        return $aResult;
     }
 }

【讨论】:

  • 不,我想显示所有名称 col,没有其他
【解决方案3】:

这是函数getoneresult()

 public function getOneResult()
{
    $row = $this->getNextRow(OCI_BOTH | OCI_RETURN_NULLS);

    if (is_array($row)) {
        return $row[0];
    } else {
        return false;
    }
}

【讨论】:

  • 当我更改 $row[3] 中的 $row[0] 时,我的身份证明表格不起作用:/
【解决方案4】:

您需要使用 while 循环收集行。所以把你的函数“getOneResult”改成这样。

public function getResults()
{
    $array = array();
    while ($row = $this->getNextRow(OCI_BOTH | OCI_RETURN_NULLS)) {
        $array[] = $row;
    } 
    return $array;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-29
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多