【发布时间】:2014-10-22 22:40:21
【问题描述】:
我创建了一个下拉菜单,但出现了问题。当我选择一个矩阵数字时,它似乎不保存数据。我在文本框中输入了一个值,例如2012456824,然后数据出来了,但是当我没有输入值时,数据也出来了。
这可能是什么原因造成的?
dropdownmenu.html
<form action="searchbook2.php" method="post">
<font color=black>Search By : </font>
<select name="choose">
<option selected="selected">-Please Choose-</option>
<option value="matricNo">Matric No.</option>
<option value="bookAccession">Accession No.</option>
</select>
<input type="text" name="search">
<input type="submit" name="submit" value="search" style="background:#996699"><br><br>
</form>
searchbook2.php
<?php
echo "<center><br><br>";
$choose = $_POST['choose'];
if($choose == 'matricNo'){
$search = $_POST['search'];
$sql = mysql_query("SELECT b.book_Accession, b.patron_ID, p.patron_Name, b.book_Title, b.book_Status
FROM book b
INNER JOIN patrons p
ON b.patron_ID = p.patron_ID
WHERE b.patron_ID LIKE '%$search%'");
if(mysql_num_rows($sql) > 0) {
while($data = mysql_fetch_array($sql)) {
$patron_ID = $data['patron_ID'];
echo "<br><br><table width='486' height='314' border='1' cellpadding='0' cellspacing='0' >";
echo "<tr><td colspan=2 align=center bgcolor=gray>Loan Item</td></tr>";
echo "<td width='200'> Patron Id : </td><td width='473'>".$data['patron_ID']."</td>";
echo "</tr><tr>";
echo "<td> Patron Name : </td><td>".$data['patron_Name']."</td>";
echo "</tr><tr>";
echo "<td> Book Accession : </td><td>".$data['book_Accession']."</td>";
echo "</tr><tr>";
echo "<td> Book Title : </td><td>".$data['book_Title']."</td>";
echo "</tr><tr>";
echo "<td> Book Status : </td><td>".$data['book_Status']."</td>";
echo "</tr><tr>";
echo '<td colspan="2" align=center><a href="bookDetail.php?patron_ID=' . $data['patron_ID'] . '"
onClick="javascript:return confirm(\'Do you want see this information ?\')">Click Here</a></td>';
echo "</tr>";
echo "</table>";
echo "<br><Br><br>";
}
}
}else if($choose == 'bookAccession'){
$search = $_POST['search'];
$sql = mysql_query("SELECT b.book_Accession, b.patron_ID, p.patron_Name, b.ISBN, b.book_Title, b.book_Author, b.book_Status, b.book_Year,
b.book_Category
FROM book b
INNER JOIN patrons p
ON b.book_Accession = p.book_Accession
WHERE b.book_Accession LIKE '%$search%'");
if(mysql_num_rows($sql) > 0) {
while($data = mysql_fetch_array($sql)) {
$book_Accession = $data['book_Accession'];
echo "<table width='486' height='314' border='1' cellpadding='0' cellspacing='0' >";
echo "<tr><td colspan=2 align=center bgcolor=gray>Book Information</td></tr>";
echo "<td width='200'> Accession No. : </td><td width='473'>".$data['book_Accession']."</td>";
echo "</tr><tr>";
echo "<td> Patron Id : </td><td>".$data['patron_ID']."</td>";
echo "</tr><tr>";
echo "<td> Patron Name : </td><td>".$data['patron_Name']."</td>";
echo "</tr><tr>";
echo "<td> Book Isbn : </td><td>".$data['ISBN']."</td>";
echo "</tr><tr>";
echo "<td> Book Title : </td><td>".$data['book_Title']."</td>";
echo "</tr><tr>";
echo "<td> Book Author : </td><td>".$data['book_Author']."</td>";
echo "</tr><tr>";
echo "<td> Book Status : </td><td>".$data['book_Status']."</td>";
echo "</tr><tr>";
echo "<td> Book Year : </td><td>".$data['book_Year']."</td>";
echo "</tr><tr>";
echo "<td> Book Category : </td><td>".$data['book_Category']."</td>";
}
echo "</table>";
echo "<br><br>";
}
}
else{
echo "Sorry the data you have been search is not available";
}
?>
【问题讨论】:
-
您能否更具体地说明当前代码在做什么以及您的预期输出
-
不要使用 SQL,它已被弃用,查看 sqli 或 PDO 准备语句,它们对 sql 注入更安全。我认为您错过了嵌套选择,从 html4 开始也已弃用字体标签。尝试将`if(!empty($_POST['search']){$search = $_POST['search'];}
-
附带说明,您的代码容易受到 SQL 注入的攻击,所有来自用户的输入都应该在用于 sql 查询之前进行清理。
-
致阿米尔:目前的代码是搜索矩阵没有数据,但我遇到了一个问题,当我输入错误的数据时,数据也会被显示..