需要mysql查询表中一列下的多个标志

时间:2012-02-22 12:42:27

标签: php mysql zend-framework zend-db

我有一个表名首选项,这里有多列但我只对两列user_preferences_nameuser_preferences_status感兴趣

注意plz 在user_preferences_name列中有多个标志,如

user_preferences_name   user_preferences_status     phone_service_id 
    a                         1                          555
    b                         0                          456
    c                         0                          236
    d                         1                          122
    e                         1                          456
    f                         0                          777
    g                         0                          555
    h                         0                          888
    i                         1                          112
    .                         .                           .
    .                         .                           .
    .                         .                           .

有许多user_preferences_name我只需要(a,b,f,q,w)及其各自的user_preferences_status(1,1,0,1,0)

我在做什么基本上是我创建一个html表单,其中有5个不同的div我每个div有2个单选按钮。 为一个:- 如果user_preferences_status == 1而不是启用单选按钮将被设置,则其他智能禁用将被设置为相同的5个潜水和单选按钮。 我尝试了什么:

class Prefrances extends Zend_Db_Table{

function Get_User_Prefrences($phone_service_id){
    $DB = Zend_Db_Table_Abstract::getDefaultAdapter();
    $select = $DB->select()
         ->from('user_preferences' , array('user_preferences_name','user_preferences_value'))
         ->where('phone_service_id = ?', $phone_service_id)
         ->where('user_preferences_name = ?', 'a')
         ->where('user_preferences_name = ?', 'b')
         ->where('user_preferences_name = ?', 'f')
         ->where('user_preferences_name = ?', 'q')
         ->where('user_preferences_name = ?', 'w');
    return $select;
    }
}

result = no rows 我认为我的逻辑错了你能指导我在这里需要什么, 一般的mysql查询也适用我将其更改为zend

2 个答案:

答案 0 :(得分:0)

$select = $DB->select()
    ->from('user_preferences' , array('user_preferences_name','user_preferences_value'))
    ->where('phone_service_id = ?', $phone_service_id)
    ->where('user_preferences_name IN (?)', array('a', 'b', 'f', 'q', 'w'));

答案 1 :(得分:0)

你创造了一个像下雨,不下雨,这从来都不是真的。 在你的情况下

SELECT user_preferences_name, user_preferences_value FROM user_preferences 
WHERE
    phone_service_id = $phoneserviceid
    AND user_preferences_name = 'a'
    AND user_preferences_name = 'b'
    AND user_preferences_name = 'f'
    AND user_preferences_name = 'q'
    AND user_preferences_name = 'w';

从来都不是真的。 您可以使用像garvey所说的子选择,或者如果它是一个“始终”的静态子集,您可以添加一列来标识此子集