在我的数据库中,我有一个名为" 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
)
答案 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
字段为VARCHAR
,CHAR
或任何其他字符串。如果是这样,您可以使用如下查询:
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
}
}
}