【发布时间】:2013-05-25 19:42:13
【问题描述】:
任何人都可以帮助我...我想按名称或协议编号搜索,但它不起作用,它只能按名称搜索,
我是计算机编程的绝对初学者,当我想按协议编号搜索时,它只显示我数据库的第一条记录,并且只按名称搜索效果很好,
'
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)
?>
'
【问题讨论】:
-
兄弟,你甚至 mysqli 吗? mysql_* 方法自 PHP v5.5.0 起已弃用,将来将被删除。 php.net/manual/en/changelog.mysql.php请切换到更安全的mysqli_*或PDO连接。
-
您容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。
-
请不要在sql查询中直接使用用户输入。确保首先使用适当的函数对它们进行转义,例如mysql_real_escape_string,但实际上你应该使用 PDO 或 mysqli 函数,因为现在不推荐使用 mysql 函数
-
您的示例缺少实际的数据库调用。此外,对于 db 问题,它有助于显示表中的 3 或 4 行内容、您期望获得的输出以及实际获得的输出。