【问题标题】:SELECT * FROM (tablename) WHERE (array values) = '1'SELECT * FROM (tablename) WHERE (array values) = '1'
【发布时间】:2016-09-18 12:18:06
【问题描述】:

我有一个关于 SQL 查询的问题。

这里是:

$allowed = array("Amsterdam", "Arnhem", "Assen", "Groningen", "Leeuwarden", "Rotterdam", "Sittard", "Tilburg", "Utrecht");

$filter = $db->prepare("SELECT * FROM users WHERE '$allowed' = '1'");
$filter->execute;

foreach($filter->fetchAll(PDO::FETCH_OBJ) as $filtered):

    $amsterdam = $filtered->amsterdam;
    $arnhem = $filtered->arnhem;
    $assen = $filtered->assen;
    $groningen = $filtered->groningen;
    $leeuwarden = $filtered->leeuwarden;
    $rotterdam = $filtered->rotterdam;
    $sittard = $filtered->sittard;
    $utrecht = $filtered->utrecht;

endforeach;

输出(回显时)为空白。

如何让查询从数组中查找列名?

感谢所有帮助。

【问题讨论】:

  • 需要添加OR部分;
  • 您是否启用了 `php.ini' 文件中的错误?在上代码之前,您是否在 SQL 服务器中测试过查询?
  • 还有一点execute 是一个方法而不是属性,所以它应该是$filter->execute();;
  • 是的,您需要OR 零件来实现您的目标,但另一个问题是:您的目的是什么?看起来过度考虑数据库结构可能是合理的。
  • 考虑改变你的数据库设计,每个城市都有一个列名是非常低效的,别介意像上面这样的问题。

标签: php mysql arrays pdo


【解决方案1】:

这是为我做的:

$query = $db->prepare("SELECT * FROM tbl_users WHERE id = '{$userId}'"); $query->execute();

    foreach($query->fetchAll(PDO::FETCH_OBJ) as $value){  

        $districts = array("amsterdam","arnhem","assen","groningen","leeuwarden","rotterdam","sittard","tilburg","utrecht","antillen","missie","dap","sap");
        $arrlength = count($districts);

        for($x = 0; $x < $arrlength; $x++) {

            if($value->$districts[$x] == TRUE){
                echo '<pre>';
                echo ucfirst($districts[$x]) . ' --> ' . $value->$districts[$x];
                echo '</pre>';
            }
        }
    }

【讨论】:

  • 我在 if($value->$districts[$x] == TRUE){ 中使用它
猜你喜欢
  • 2014-01-27
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 2023-01-11
  • 2014-10-26
相关资源
最近更新 更多