【发布时间】:2016-07-31 16:17:26
【问题描述】:
我正在制作一个用于显示数据库中数据的网页。数据库存储在MySQL 中,我正在PHP 中制作网页。我拥有的PHP 代码是
<form action="list_projects.php" method="post">
<p>Choose Search Type: <br /></p>
<select name="searchtype">
<option value="partNo">Part Number</option>
<option value="pname">Part Name</option>
<option value="color">Part Colour</option>
<option value="weight">Part Weight</option>
<option value="city">City</option>
</select>
<br />
<p>Enter Search Term: </p>
<br />
<input name="searchterm" type="text" size="20"/>
<br />
<input type="submit" name="submit" value="Search"/>
</form>
<?php
$searchtype=$_POST['searchtype'];
$searchterm=trim($_POST['searchterm']);
if (!$searchtype || !$searchterm) {
echo 'No search details. Go back and try again.';
exit;
}
$query = "select * from project where ".$searchtype." like '%".$searchterm."%'";
var_dump($query);
$result = mysqli_query($link,$query);
$num_results = mysqli_num_rows($result);
echo "<p>Number of projects found: ".$num_results."</p>";
for ($i=0; $i <$num_results; $i++) {
$row = mysqli_fetch_assoc($result);
echo "<p><strong>".($i+1).". Part Number: ";
echo htmlspecialchars(stripslashes($row['partNo']));
echo "</strong><br />Part Name: ";
echo stripslashes($row['pname']);
echo "<br />Part Colour: ";
echo stripslashes($row['color']);
echo "<br />Part Weight: ";
echo stripslashes($row['weight']);
echo "<br />City";
echo stripcslashes($row['city']);
echo "</p>";
}
mysqli_free_result($result);
mysqli_close($link);
?>
但是当我运行它时,我得到string(49) "select * from project where projectNo like '%J1%'" Number of projects found: 这个PHP 脚本用于加载数据库中的不同项目,并且在调用此脚本的welcome.php 脚本中连接到数据库并且它确实连接到它正确。
【问题讨论】:
-
如果你直接运行查询
select * from project where projectNo like '%J1%',你会得到任何结果吗? -
删除
var_dump($query);,它被连接到echo "<p>Number of projects found: ".$num_results."</p>";然后它运行吗 -
@RiggsFolly 它已经消除了错误,但它不会显示数据库中的任何内容
-
在将
$_POST值插入 SQL 查询之前,对它们运行 mysqli_real_escape_string 也是一个非常好的主意。否则,任何带有'或某些其他字符的搜索词都会搞砸您的数据库。