0

我从多个表单字段中获取值并使用准备好的语句来查询数据库。虽然下面的代码适用于在单个字段中输入的条件,但如果我在多个字段中输入,它不会返回任何值。原因似乎是页面只处理输入的最后一个字段。当我之前echo的值我只得到一个值...$params$results->execute(array($params));

这是我所拥有的:

<?php


$dbhost     = "ip_address";
$dbname     = "db_name";
$dbuser     = "db_login";
$dbpass     = "db_pass"; 

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

    $query = "SELECT * FROM tbl_name WHERE 1=1";

    foreach ($_POST as $k => $v) 
    { 
      if(!empty($v)) {
        $query .= " AND $k LIKE ?";
        $params[] = '%'.$v;     
      }  
    }   

    $results = $conn->prepare($query);
    $results->execute($params);

    $results->bindColumn(1, $no);
    $results->bindColumn(2, $date);
    $results->bindColumn(3, $name);
    $results->bindColumn(4, $id);
    $results->bindColumn(5, $path);

?>

编辑:

我将上面的代码更改为工作脚本

4

1 回答 1

2

您应该首先定义$params为一个数组,然后像@mkjasinski 所说的那样做。也是prepare在完整的查询构建之前完成的,因此发送到数据库的查询是:

SELECT * FROM tbl_name WHERE 1=1

我相信做好这两件事会让你得到你想要的。

于 2013-04-02T18:14:24.890 回答