//在WEB中PHPfunction getdata($conn, $query, $params = array()){
    $r = array();
    $h = pg_prepare($conn, "mquery", $query);
    $h = pg_execute($conn, "mquery", $params);
    while($v = pg_fetch_array($h, NULL, PGSQL_ASSOC)){
        $r[] = $v;   
    }
    return $r;
}function insdata($conn, $query, $params = array()){
    $h = pg_prepare($conn, "iquery", $query);
    $h = pg_execute($conn, "iquery", $params);
    return $h;
}if(isset( $_POST['mod'])){
    if($_POST['mod'] == "search"){
        $l = "%" . $_POST['q'] . "%";
        $params = array();
        $params[] = $l;
        $q = "SELECT * FROM ingrediente ";
        $q .= "WHERE nome ILIKE $1";
     //$q .= "WHERE nome ILIKE $1";
         
$data = getdata($db,$q,$params);
    }
    if($_POST['mod'] == "ins"){
        $values = $_POST['v'];
        $q = "INSERT INTO ingrediente VALUES($1, $2)";
        insdata($db,$q,$values);
    $data = getdata($db,"SELECT * FROM ingrediente");
    }
}else{
    $data = getdata($db,"SELECT * FROM ingrediente");
}$1";/*
如果我想要多个条件联合一起搜索怎么办呢?
 $q = "SELECT * FROM ingrediente ";
        $q .= "WHERE nome ILIKE $1";
这里只有一个搜索条件,我想再增加的话应该怎样修改代码?比如 and Type="xxx"
*/

解决方案 »

  1.   

    是不是这个意思?//$l = "%" . $_POST['q'] . "%";下添加
    if (isset($_POST['t'])){
    $Type=$_POST['t'];//注意提交 t 类型
    $TSQL =" AND `Type`='{$Type}'";
    }else{
    $TSQL='';
    }
    //$q .= "WHERE nome ILIKE $1"; 下添加
    $q.=$TSQL;
      

  2.   

    感谢啊,不过我试了试修改代码如下$conn_string = "host=127.0.0.1 port=5432 dbname=postgres user=postgres password=ronaldo9f";
    $db = pg_connect($conn_string);
                     //$q = "SELECT * FROM ingrediente "; $params = array(); $params[] = $l;
    function getdata($conn, $query, $params = array()){
        $r = array();
        $h = pg_prepare($conn, "mquery", $query);
        $h = pg_execute($conn, "mquery", $params);
        while($v = pg_fetch_array($h, NULL, PGSQL_ASSOC)){
            $r[] = $v;   
        }
        return $r;
    }
    print "<form method=POST action=visu.php>";
    print "<input type=text name=q />";
    //我加的
    print "<input type=text name=t />";print "<input type=hidden name=mod value=search />";
    print "<input type=submit value=cerca />";
    print "</form>";
    print "</center>";print "<table>";
    print "<th>Nome</th><th>Descrizione</th>";
    if(isset( $_POST['mod'])){
        if($_POST['mod'] == "search"){
            $l = "%" . $_POST['q'] . "%";
         //aggiunge
           if (isset($_POST['t'])){
            $Type=$_POST['t'];//注意提交 t 类型
            $TSQL =" AND tipo='{$Type}'";
              }else{
                  $TSQL='';
                }
    $params = array();
            $params[] = $l;
            $q = "SELECT * FROM ingrediente ";
           $q .= "WHERE nome ILIKE $1";
      //$q .= "WHERE nome ILIKE $1"; 下添加
            $q.=$TSQL;         
    $data = getdata($db,$q,$params);
        }为什么没有效果呢?表单中Ingrediente实体中有nome,tipo属性,有一条数据是nome=limone,tipo=condimenti
    为什么没有效果呢
      

  3.   

    没看你具体如何修改,你可以这么调试 直接输出 SQL语句 看看就知道啦.