0

私は自分のクエリステートメントで成功していません、そしてそれは私がそれを実行している方法に関係していると思います。

$query5 = "select * from ".$db_prefix."customer_det where (fname = '".$fname."' and lname = '".$lname."') or phone = '".$phone."'";

基本的に、名前と名前が投稿された名前と名前と一致する場合は、customer_detからすべてを選択します。投稿された姓名がない場合は、投稿された電話番号が一致するすべての場所を選択するようにします。私の3つの変数$fname、$ lname、および$ phoneはすべて、前の形式$_POST['fname']から読み取るように設定されています。等...

これは使用するのに適切なロジックですか?

4

2 に答える 2

1

正しいロジックは1つのクエリに結合されているため、使用されていません。クエリが1つだけ使用されている場合は、$ phoneの部分とともに、どちらも投稿されていない場合に検索され$fname=''ます。$lname=''

試す:

if( !empty($fname) && !empty($lname) )
  $query5 = "select * from ".$db_prefix."customer_det where (fname = '".$fname."' and lname = '".$lname."')";
 else
    $query5 = "select * from ".$db_prefix."customer_det where phone = '".$phone."'";
于 2012-11-06T17:29:50.177 に答える
0

現在クエリを実行すると、名前が一致するすべての行と電話番号が一致するすべての行が返されます。電話番号が一致する行のみを返したいが、送信された姓名が空白の場合にのみ、次のようにwhere句に追加する必要があります。

$query5 = "select * from ".$db_prefix."customer_det where (fname = '".$fname."' and lname = '".$lname."') or ('".$fname."' = '' and '".$lname."' = '' and phone = '".$phone."'");

これにより、送信された姓名が両方とも空白の場合にのみ電話番号が行の照合に使用され、2つの別々のクエリをコーディングする必要がなくなります。

于 2012-11-06T17:33:37.030 に答える