2

任何人都可以帮助我...我想按名称或协议编号搜索,但它不起作用,它只能按名称搜索,

我是计算机编程的绝对初学者,当我想按协议编号搜索时,它只显示我数据库的第一条记录,并且只按名称搜索效果很好,

'

     mysql_select_db("aruba", $con);

        $a1=$_POST['u_Name'];
         $a2=$_POST['u_Agreement'];


         $sql=" SELECT * FROM customer
            WHERE Name like ('%$a1%') 
            OR AgreementNum ='$a2'


                 ";


         $q=mysql_query($sql);
           $x=mysql_fetch_array($q);

          ?>
        $q=mysql_query($sql);
           $x=mysql_fetch_array($q);

        ?><table>
        <tr><td><b>Customer Name:</b></td><td><?php echo" " ,$x['Name'];
         ?></td><?php
          ?><tr><td><b>Address:</b></td><td><?php echo"", $x['Address'];
          ?></td><?php
            ?><tr><td><b>Contact Person:</b></td><td><?php echo"             " ,$x['Sales'];
           ?></td><?php
           ?><tr><td><b>Phone Number: </b></td><td><?php echo"           ", $x['PhoneNum'];
         ?></td><?php
            ?><tr><td><b>Maintenance Agreement No:</b></td><td><?php echo"             "                 ,$x['AgreementNum'];
       ?></td><?php   
        ?><tr><td><b>Start Date:</b></td><td><?php echo"          " ,$x['StartDate'];
         ?></td><?php 
        ?><tr><td><b>End Date: :</b></td><td><?php echo"      " ,$x['EndDate'];
      ?></td><?php 
          ?><tr><td><b>Reseller Name:</b></td><td><?php echo" " ,$x['Reseller'];
         ?></td><?php 
          ?><tr><td><b>Product Model:</b></td><td><?php echo"      " ,$x['ModelNum'];
        ?></td><?php 
         ?><tr><td><b>Remarks:</b></td><td><?php echo" " ,$x['Quantity'];
        ?></td><?php 
        mysql_close($con)
         ?>
       '
4

2 回答 2

0
select * from table where field in ('1','2','3')
于 2013-05-30T11:47:00.007 回答
0

尝试将您的陈述括在括号中。我不确定 LIKE 是否接受和 OR 参数,但我认为这是您问题的根源。尝试:

$sql=" SELECT * FROM customer
            WHERE (Name like ('%$a1%') )
            OR ( AgreementNum ='$a2' ) 
";

另外,还有几点注意事项:

  • 不要使用 mysql_,它已被弃用。切换到 PDO 或 mysqli。
  • 过滤用户输入。如果您将用户输入直接粘贴到查询中,则您要求进行 mysql 注入。

想知道如果突然发生这种情况会发生什么?(不要在你的数据库上测试这个!!)

$a2 = "'); DELETE FROM customer;--";

回答:

SELECT * FROM customer
     WHERE (Name like ('%$a1%') )
     OR ( AgreementNum =''); DELETE FROM customer;--' ) 
于 2013-06-03T08:58:19.987 回答