将数据库结果的条件指定给数组

时间:2011-12-06 18:50:07

标签: php arrays

在我的数据库中,我有一个名为" modules" - 信息数据如下所示:1,4,1,3 我想通过PHP列出/输出所有数据,数字为1 - 所有其他数字都必须被忽略。

我想通过数组NOT myracle

检查输出结果

有什么建议我怎么做?

$list_modules = array();
            $res_m = $db->Execute("SELECT modules FROM users u WHERE user_id = '".$user->id."'");
            while ( $m = $res_m->GetNext() ) {
                $list_modules = array($m['modules']);
            }

            print_r($list_modules); //Output below 

示例(输出):

Array
(
    [0] => 1, 4, 1, 3
)

5 个答案:

答案 0 :(得分:1)

您可以使用WHERE子句在MySQL中执行此操作。根据数据库中的列名称:

SELECT column_name FROM table WHERE column_name = 1;

注意:在您的问题中,您似乎尝试列出范围:

  

数字1 - 必须忽略所有其他数字。

如果您打算放置范围(例如1 - 4),那么您的WHERE子句将是:

WHERE column_name BETWEEN 1 AND 4

答案 1 :(得分:1)

您应该在MySQL查询中测试它:

SELECT * FROM `TABLE` WHERE `modules` = 1;

或者,如果那是不可能的话......

使用foreach循环并测试1?

$array = array(1,4,1,3);
foreach ($array as $element) {
    if ($element == 1) { echo 1; }
}

答案 2 :(得分:0)

您在评论中说明modules字段包含以逗号分隔的值,是吗?我估算modules字段为VARCHARCHAR或任何其他字符串。如果是这样,您可以使用如下查询:

SELECT * FROM `tableName` WHERE `modules` LIKE '%1,%';

可能有其他解决方案,可能更优化,但我认为这个应该表现良好。

答案 3 :(得分:0)

这应该这样做......真的没有其他办法在col上看到Varchar,你还需要消除15,21等字符串,所以%1%将不起作用。

SELECT modules FROM users WHERE user_id = ".$user->id." AND modules LIKE % 1,%

试一试,让我知道它是否有效。

答案 4 :(得分:0)

我找到了可以使用的解决方案。

$list_modules = array();
            $query = "SELECT modules FROM users WHERE user_id = ".$user->id."";
            $res_m = $db->Execute($query);
            while ( $m = $res_m->GetNext() ) {
                $list_modules = array('id' => $m['modules']);
            }

$modules = explode(",",$list_modules['id']);
            foreach ($modules as $key => $value) {

                if($value == 1){
                // list data    
                   }
                }
            }