php7.1.8を使っています。
ajaxのgetでデータを送信してphpで受けています。
データを受けているかどうかの判断をif文で書いているのですが、if文の書き方が良くないのかif文をtrue判断してしまいます。
ajax
1var bango=$('#bango').val(); 2$.ajax({ 3 type: "GET", 4 url: "test1.php", 5 data: { 6 bango: bango 7 } 8});
php
1$bango=null; 2if(isset($_GET['bango'])){ 3 $bango = $_GET['bango']; 4} 5 6$sql=" select * from test " 7 ." where chk=1" 8if(!is_null($bango)){ 9 $sql=$sql." and bango=:bango" 10} 11$prepared = $db->prepare($sql); 12if(!is_null($bango)){ 13 $prepared->bindValue(':bango, $bango, PDO::PARAM_STR); 14}
bangoにデータを渡していないのにsql文にbangoの抽出が追加されてしまいます。
nullのときはbangoの抽出(and bango=:bango)をSQL文に追加しないようにしたいです。
if文の判断が良くないのでしょうか。
教えてください。
お願いします。
リファレンス(https://www.php.net/manual/ja/types.comparisons.php)によると、isset()はNULLか未定義でないかぎりTRUEになるようですが、ajaxでどういう送信の仕方をしているかもソースを開示してもらった方が回答がつきやすいと思います。
bango=null;
↑ここ本当にこう書いてますか?
このままならエラーかと思います
bango=null;でエラーにはなってないです。ちなみにbango="";にして、if(!empty($bango)){にしても駄目でした。上記コードと同じで、SQL文にand bango=:bangoが追加されてしまいます。
<?php
もないのでそもそもPHPとして動かないということなのですけど。
>bangoにデータを渡していないのに
下記コードが本当なら、渡してますね。
$.ajax({
type: "GET",
url: "test1.php",
data: {
bango: bango
}
});
ただ、コードがつまみすぎて誰も再現確認できないことは問題です。
コードは一通り、全体の流れが分かるものを提示してください。
このままではJavaScriptもPHPも動きません。
しつこいようですが、コードは一通り、全体の流れが分かるものを提示してください。
このままではJavaScriptもPHPも動きません。
HTMLもないわけですから。
すみませんでした。記入ミスでした。申し訳ありませんでした。
<?php
もないのでそもそもPHPとして動かないということなのですけど。
回答2件
あなたの回答
tips
プレビュー