0

我的查询语句没有成功,我认为这与我执行它的方式有关。

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

本质上,当名字和姓氏与发布的名字和姓氏匹配时,我想从 customer_det 中选择所有内容。如果没有发布的名字和姓氏,那么我希望它选择所有发布的电话号码匹配的地方。我的三个变量 $fname、$lname 和 $phone 都设置为从之前的表单 $_POST['fname']; 中读取。ETC...

这是要使用的正确逻辑吗?

4

2 回答 2

1

The right logic is not used, since its combined into 1 query. If only 1 query is used, it will search for $fname='' and $lname='' when neither of that is posted, along with the $phone part.

Try:

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."'");

这确保了电话号码仅在提交的名字和姓氏都为空时用于匹配行,并且不需要编写两个单独的查询。

于 2012-11-06T17:33:37.030 回答