搜索数据库不起作用

时间:2013-05-30 09:36:22

标签: php mysql sql database

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

我是计算机编程的绝对初学者,当我想通过协议编号搜索它只显示我的数据库的第一条记录,并且只按名称搜索工作正常,

     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)
         ?>
       '

2 个答案:

答案 0 :(得分:0)

select * from table where field in ('1','2','3')

答案 1 :(得分: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;--' )