2017-06-21 76 views
0

我得到这个功能:SQL查询没有返回值,即使是在MySQL表值

private function _loadColumnRights() { 

      $db = Zend_Registry::get('db'); 

      // Create the select query 
      $select = $db->select() 
         ->from('account_columns', array(
          'accountId' 
         )) 
         ->where('accountId = ?', $this->getId()); 

      // Fetch the data 
      $row = $db->fetchRow($select); 
      if($row != null) { 
       $this->setColumns($row['columns']); 
      } 
      else { 
       $this->setColumns(''); 
      } 
     } 

我搜索accountID = '128'

我的表看起来像这样:

帐户ID |列

并在行中与accountId = '128'我得到了这样一个值'orderdate,ref-corlido,item-no,partid,item-description,quantity-value,measurement-of-measurement,acquisition-value-order-line ,销售价值订单行,标记,到期日,状态,直接交付,超出范围,不符合,备忘录,请求文档,文档'

如果我在PHP手动执行此操作SQL语句:

SELECT * FROM `account_columns` WHERE `accountId` = '128' 

然后我得到的结果..

我的代码也变为此,如果:

if($row != null) { 
      $this->setColumns($row['columns']); 
     } 

$row['columns']为空值..如果我在此获取我的观点进行的var_dump然后我得到空值

如果我改变$row['columns'])到:

$this->setColumns($row['accountId']); 

然后我得到128的值.. 但我没有得到列值..怎么回事?

回答

1

因为您只需要在结果行中输入一列。 :)

你只为k的accountId ...

private function _loadColumnRights() { 

     $db = Zend_Registry::get('db'); 

     // Create the select query 
     $select = $db->select() 

        // THERE IS YOU ERROR :) 
        // THE SECOND PARAMETER IS AN ARRAY OF RESULT COLUMNS 
        ->from('account_columns', array(
         //'accountId', <-- Your error :) 
         '*' // use this if you want all columns back 
         //'columns' // or add this column name 
        )) 


        ->where('accountId = ?', $this->getId()); 

     // Fetch the data 
     $row = $db->fetchRow($select); 
     if($row != null) { 
      $this->setColumns($row['columns']); 
     } 
     else { 
      $this->setColumns(''); 
     } 
    } 

PS:你真的应该为“列” colmn使用其他名称... :) 看的保留字列表,关键字...不要将它们用于列名或表名。 :)

https://dev.mysql.com/doc/refman/5.7/en/keywords.html

有一个伟大的一天!

祝你好运!

+1

感谢您的回答,并指出一个大+指出错误的地方:) – YdB