2017-02-09 5 views
1

にフェッチは、私のコードは、($ _POSTの要素に値を与えることについて怖がってはいけない、それが唯一のテストのためです)です:可変SQLクエリ=>致命的なエラー、ここでブール

$array_sql = array(); 
$sql = "SELECT * FROM voyages WHERE 1"; 

$_POST['numeroCommande'] = 531351351; 

if (!empty($_POST['numeroCommande'])) 
{ 
    $sql .= " AND numeroCommande = :numeroCommande"; 
    $array_sql['numeroCommande'] = $_POST['numeroCommande']; 
} 

$_POST['numeroOT'] = 'JC05'; 

if (!empty($_POST['numeroOT'])) 
{ 
    $sql .= " AND numeroOT = :numeroOT"; 
    $array_sql['numeroOT'] = $_POST['numeroOT']; 
} 

$req = $bdd->query($sql . ' ORDER BY dateMinChargement DESC'); 

$data = $req->fetch(); 

私が手:"Fatal error: Call to a member function fetch() on boolean"

異常がないかどうかを調べるために、配列と変数$sqlを表示しようとしました。 ...

Array ([numeroCommande] => 531351351 [numeroOT] => JC05)

SELECT * FROM voyages WHERE 1 AND numeroCommande = :numeroCommande AND numeroOT = :numeroOT 

問題がどこにあるか私が見ることができない

+1

query()の代わりにprepare()とexecute()を使用する必要があります。 – Naktibalda

+0

あなたは '$ array_sql'に値を入れますが、あなたは何もしません!あなたは質問を準備すべきではありません! –

+0

私はこの愚かな間違いを見て、この投稿を書いて読んだときだけです...確かに、私はいくつかの条件があり、フォーラムに投稿するために簡略化しました。無駄な時間をおかけして申し訳ありません... – Kuartz

答えて

1

を:ここで

print_r($array_sql); ?> <br /> <?php 
echo ($sql); 

私はブラウザで得るものです:だから私はで$data->$req->fetch()を置き換え値を割り当てていません

$req= $bdd->prepare($sql); 
    $req->execute(array(':numeroCommande'=> $$_POST['numeroCommande'], 
           ':numeroOT'=>$$_POST['numeroOT'])); 
     $data = $req->fetch(); 
関連する問題