0
if($_GET['s']<>''){

    $explode = explode(' ',$_GET['s']);
    $num = count($explode);

    for($i=0;$i<$num;$i++){
        $busca .= " `nome` LIKE :busca$i ";//OR `district` LIKE :busca$i OR `city` LIKE :busca$i OR `area` LIKE :busca$i ";

        if($i<>$num-1){ $busca .= ' AND '; }

    }
    $buscar = DB::getConn()->prepare("SELECT * FROM users WHERE $busca");
    for($i=0;$i<$num;$i++){
        $buscar->bindValue(":busca$i",'%'.$explode[$i].'%',PDO::PARAM_STR);
    }
    echo "$busca";  
    echo "$explode[0]";
    $buscar->execute(); 

}

エコーは問題なく動作しますが、$buscar の値をバインドしていないため、次のように返されます。

nomeいいね:busca0

$explode[0] からの値を $busca0 に配置せず、explode のエコーは適切に機能しています...

4

2 に答える 2

0
if($_GET['s']<>''){

    $explode = explode(' ',$_GET['s']);
    $num = count($explode);

    for($i=0;$i<$num;$i++){
        $busca .= " `nome` LIKE :busca$i ";//OR `district` LIKE :busca$i OR `city` LIKE :busca$i OR `area` LIKE :busca$i ";

        if($i<>$num-1){ $busca .= ' AND '; }

    }
    $buscar = DB::getConn()->prepare("SELECT * FROM users WHERE $busca");
    for($i=0;$i<$num;$i++){
        $buscar->bindValue(":busca$i",'%'.$explode[$i].'%',PDO::PARAM_STR);
    }
    echo "$busca";  
    echo "$explode[0]";
    echo var_export($buscar->execute()->fetchAll(),true); 

}

bind は ' をエスケープしますが、それは望ましくありません

于 2013-09-10T19:05:03.080 に答える