使用PHP / MYSQL书籍但在尝试访问数据库时没有从PHP获得输出

时间:2012-08-09 21:49:45

标签: php mysql mysqli

我目前正在努力完成“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>

3 个答案:

答案 0 :(得分:1)

你正在压制线上的错误:

@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');

这是@符号的作用,删除@符号并验证连接是否正常工作,可能是您的脚本在那里失败。

你不应该使用它,据我所知,它不被视为良好做法。

答案 1 :(得分:0)

您需要创建另一个发送帖子请求的php页面。这是一个样本:

看看小提琴:

http://jsfiddle.net/u8EBJ/1/

答案 2 :(得分:0)

它对我有用!没有白页!如果您使用包含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;
 }