【问题标题】:Using array keys and values to create sql select statement使用数组键和值创建sql select语句
【发布时间】:2012-06-26 06:04:20
【问题描述】:

我正在尝试传递一个包含键和值的数组。

键是列,值是要选择的值。

我正在尝试编写一个函数,我可以在其中传递一个数组并将键和值用作表的列和值。例如:

$array = array("user"=>"joe", user_id="2");

我需要这样创建 sql 语句:

select * from table where $key = $value;

【问题讨论】:

  • 您是在使用PDOmysqli 还是mysql 来执行查询?

标签: php mysql arrays pdo sql


【解决方案1】:

使用foreach 循环遍历数组并获取键和值。像这样:

$sql='';
foreach($array as $key=>$value){
    $sql = sprintf("select * from table where %s = %s",$key,$value);
    print $sql;
}

【讨论】:

    【解决方案2】:

    您可以像这样构建一个简单的 SQL Select:

    <?php
    
    
    /**
     * @param array Column => Value pairs
     * @return string
     */
    function create_sql_select(array $pair){
      $condition = array(); 
    
      foreach ( $pair as $key => $value){
        $condition[] = "{$key} = '{$value}'";
      } 
    
     // Separate by AND delimiter if there are more than 1 pair 
     $condition = join(' AND ', $condition);
    
     // Return prepared string:
     return "SELECT * FROM your_table WHERE {$condition}";
    }
    
    //Will print: SELECT * FROM your_table WHERE user = 'some' AND age = '10'
    print create_sql_select(array('user' => 'some', 'age' => 10));
    

    【讨论】:

    • 哦不错的方法,比我目前用于条件映射的函数更好。
    • 现在不是不推荐真正的转义字符串功能。我应该提到我正在使用 PDO
    • 这段代码没有使用 PDO,也容易受到 sql 注入的影响
    • @YourCommonSense 这个答案是关于构建一个查询字符串
    • 这个问题是关于PDO的。当然,以目前的形式,这个答案是一场灾难
    猜你喜欢
    • 2021-01-28
    • 2013-07-13
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2012-08-25
    相关资源
    最近更新 更多