我目前正在研究"PHP和MySQL Web开发"。我已经成功地创建了数据库,并且能够制作表格并使用数据库。我也成功完成了有关PHP的所有章节,并且到目前为止PHP无法正常工作没有任何问题。此页面的目标是从数据库返回搜索结果。这是一件非常简单的事情,但由于某种原因,脚本没有输出到页面。我没有收到任何错误或任何东西。它只是空白,标题在顶部。谁能帮我解决这个问题?谢谢。
这是PHP代码:
<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
// create short variable names
$searchtype=$_POST['searchtype'];
$searchterm=trim($_POST['searchterm']);
if (!$searchtype || !$searchterm) {
echo 'You have not entered search details. Please go back and try again.';
exit;
}
if (!get_magic_quotes_gpc()){
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}
@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');
if (mysqli_connect_errno()) {
echo 'Error: Could not connect to database. Please try again later.';
exit;
}
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);
$num_results = $result->num_rows;
echo "<p>Number of books found: ".$num_results."</p>";
for ($i=0; $i <$num_results; $i++) {
$row = $result->fetch_assoc();
echo "<p><strong>".($i+1).". Title: ";
echo htmlspecialchars(stripslashes($row['title']));
echo "</strong><br />Author: ";
echo stripslashes($row['author']);
echo "<br />ISBN: ";
echo stripslashes($row['isbn']);
echo "<br />Price: ";
echo stripslashes($row['price']);
echo "</p>";
}
$result->free();
$db->close();
?>
</body>
</html>
您正在抑制该行中的错误:
@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');
这就是 @ 符号的作用,删除 @ 符号并验证连接是否正常工作,可能是您的脚本在那里失败。
你不应该使用它,据我所知,这不被认为是好的做法。
它对我有用! 没有白页!如果您使用包括ftp的编辑器,有时保存文件会失败。比你得到一个空白文件。在这种情况下,请保护代码并重新打开文件。
至于SQL注入,请尝试以下操作:
$searchtypes = array('type1','type2');
if (!in_array($searchtype,$searchtypes) || $searchterm=='') {
echo 'You have not entered search details. Please go back and try again.';
exit;
}
您需要创建另一个发送 post 请求的 php 页面。下面是一个示例:
看看小提琴:
<html>
<head>
<title>Book-O-Rama Search </title>
</head>
<body>
<h1>Book-O-Rama Search</h1>
<form id='uploadform' method='post' enctype='multipart/form-data' action='link to your search action php page'>
<legend>Submit form</legend><br/>
<div class='form-inputs'>
SearchType <input name='searchtype' id='searchtype'/><br>
SearchTerm <input name='searchterm' id='searchterm'/><br>
<input type="submit" value= "Search" />
</div>
</form>
</body>
</html>