0

複数のフォーム フィールドから値を取得し、準備済みステートメントを使用してデータベースにクエリを実行しています。以下のコードは 1 つのフィールドに入力された条件に対して機能しますが、複数のフィールドに入力すると値が返されません。その理由は、ページが最後に入力されたフィールドのみを処理しているためです。前にecho値を取得すると、値が1つしか取得されません...$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

この2つを正しく行うことで、あなたが望むものを手に入れることができると私は信じています.

于 2013-04-02T18:14:24.890 に答える