我有这个功能:
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'
我的表格如下:
accountId |列
并且在accountId = '128'
的行中我得到了一个像'orderdate,ref-corlido,item-no,partid,item-description,quantity-value,measurement-of-measurement,acquisition-value-order的值-line,sales-value-order-line,markup,due-date,status,direct-delivery,out-scope,non-compliant,memo,request-document,documents'
如果我在PHP中手动执行此SQL语句:
SELECT * FROM `account_columns` WHERE `accountId` = '128'
然后我得到结果..
如果符合以下条件,我的代码也适用于此:
if($row != null) {
$this->setColumns($row['columns']);
}
但是$row['columns'
]的值是空的。如果我在这个getter上的视图上执行var_dump,那么我得到空值
如果我将$row['columns']
更改为:
$this->setColumns($row['accountId']);
然后我得到128值.. 但我没有得到列值..怎么来的?
答案 0 :(得分:1)
因为您只在结果行中要求一列。 :)
你只能作为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('');
}
}
P.S。:你真的应该为&#34;列使用另一个名字&#34; colmn ... :) 查看保留字和关键字列表...不要将它们用于列名或表名。 :)
https://dev.mysql.com/doc/refman/5.7/en/keywords.html
祝你有美好的一天!
祝你好运!