Php 数据库检索系统
我为一个学校项目创建了这个网站,但它似乎没有检索数据。我已经看了很久了,不知道为什么它没有恢复。SQL有时在phpMyAdmin中工作,但在接口中从不工作Php 数据库检索系统,php,html,sql,database,Php,Html,Sql,Database,我为一个学校项目创建了这个网站,但它似乎没有检索数据。我已经看了很久了,不知道为什么它没有恢复。SQL有时在phpMyAdmin中工作,但在接口中从不工作 <?php $con=mysqli_connect("localhost","root","#","book_catalogue"); { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } ?> <div id="wrapper">
<?php
$con=mysqli_connect("localhost","root","#","book_catalogue");
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
<div id="wrapper">
<div id="left-col">
<img src="images/left-img.png" alt="books" />
</div>
<div id="header">
<h1>BOOK CATALOGUE</h1>
</div>
<!--Radio buttons that allow user to select the search criteria-->
<div id="navigation">
<form name="input" action="indexV4.php" method="get">
SEARCH BY: ALL<input type="radio" name="books" value="ALL" checked>
TITLE<input type="radio" name="books" value="TITLE">
AUTHOR<input type="radio" name="books" value="AUTHOR">
GENRE<input type="radio" name="books" value="GENRE">
BOOK TYPE<input type="radio" name="books" value="BOOKTYPE">
<input type="text" name="SEARCH" value="SEARCH">
<input type="submit" value="GO">
</form>
</div>
<?php
$Books = $_GET['books'];
$Search = $_GET['SEARCH'];
//if the radio button 'TITLE' is selected, this query will run
if($Books=='TITLE')
{
$result = mysqli_query($con,"
SELECT tbl_books.ISBN, tbl_books.Title, tbl_books.Author, tbl_books.Book_Image, tbl_book_type.Name, tbl_categories.Name FROM tbl_books, tbl_book_type, tbl_categories WHERE (tbl_books.Type_id = tbl_book_type.Type_id) AND (tbl_books.Category_id = tbl_categories.Category_id)
WHERE tbl_books.Title LIKE '%$Search%'");
}
//if the radio button 'AUTHOR' is selected, this query will run
else if ($Books=='AUTHOR')
{
$result = mysqli_query($con,"
SELECT tbl_books.ISBN, tbl_books.Title, tbl_books.Author, tbl_books.Book_Image, tbl_book_type.Name, tbl_categories.Name FROM tbl_books, tbl_book_type, tbl_categories
WHERE (tbl_books.Type_id = tbl_book_type.Type_id) AND (tbl_books.Category_id = tbl_categories.Category_id)
WHERE tbl_books.Author LIKE '%$Search%'");
}
//if the radio button 'GENRE' is selected, this query will run
else if ($Books=='GENRE')
{
$result = mysqli_query($con,"
SELECT tbl_books.ISBN, tbl_books.Title, tbl_books.Author, tbl_books.Book_Image, tbl_books.Type_id, tbl_books.Category_id FROM tbl_books
WHERE tbl_books.Author LIKE '%$Search%'");
}
//if the radio button 'BOOK TYPE' is selected, this query will run
else if ($Books=='BOOKTYPE')
{
$result = mysqli_query($con,"
SELECT tbl_books.ISBN, tbl_books.Title, tbl_books.Author, tbl_books.Book_Image, tbl_book_type.Name, tbl_categories.Name FROM tbl_books, tbl_book_type, tbl_categories
WHERE (tbl_books.Type_id = tbl_book_type.Type_id) AND (tbl_books.Category_id = tbl_categories.Category_id)
WHERE tbl_book_type.Name LIKE '%$Search%'");
}
//if 'ALL' is selected, this query will run
else
{
$result = mysqli_query($con, "
SELECT tbl_books.ISBN, tbl_books.Title, tbl_book_type.Name, tbl_categories.Name FROM tbl_books, tbl_book_type, tbl_categories WHERE (tbl_books.Type_id = tbl_book_type.Type_id) AND (tbl_books.Category_id = tbl_categories.Category_id)
WHERE tbl_books.Title OR tbl_books.Author OR tbl_categories.Name OR tbl_book_type.Name LIKE '%$Search%'");
}
//while it is retrieving the data, echo it onto the screen
while($row = mysqli_fetch_array($result,MYSQLI_BOTH))
{
?>
</div>
<div id="content">
<!--Display of search results-->
<div class="books">
<img src="book-covers/<?php echo $row['Book_Image']; ?>" alt="<?php echo $row['Title']; ?>" />
<p class="first"><?php echo $row['Title']; ?></p>
<p><?php echo $row['Author']; ?></p>
<p><?php echo $row['ISBN']; ?></p>
<p><?php echo $row['Type_id']; ?></p>
<p><?php echo $row['Category_id']; ?></p>
</div>
</div>
<?php
//close the loop
}
?>
</div>
图书目录
搜索方式:全部
标题
作者
体裁
书型
您的查询一开始就不正确。一条语句中不能有两个WHERE。以下是您的查询语句之一
SELECT tbl_books.ISBN, tbl_books.Title,
tbl_books.Author, tbl_books.Book_Image,
tbl_book_type.Name, tbl_categories.Name
FROM tbl_books, tbl_book_type, tbl_categories
WHERE (tbl_books.Type_id = tbl_book_type.Type_id) AND
(tbl_books.Category_id = tbl_categories.Category_id)
WHERE tbl_books.Title LIKE '%$Search%'
您是否看到您使用了两次WHERE
此外,您的代码不安全。您应该使用PDO或至少使用mysql\u real\u escape\u string
正如invisal所说,一条语句中不能有2个WHERE
我建议更改您的if声明内容。而不是mysqli_查询($con,“selectblabla”)代码>
这样做:
$sql=“选择BLA BLA”
然后,在if语句创建$sql之后,执行以下操作:
$result = mysql_query($con,$sql);
if($result === false) {
echo 'Error in query [' . $sql . ']' . "\n" . 'Error: ' . mysql_error();
}
然后您将看到您的查询出了什么问题
编辑:
让我试着澄清一下:
if($Books=='TITLE')
{
$sql = "SELECT tbl_books.ISBN, tbl_books.Title, tbl_books.Author, tbl_books.Book_Image, tbl_book_type.Name, tbl_categories.Name FROM tbl_books, tbl_book_type, tbl_categories WHERE (tbl_books.Type_id = tbl_book_type.Type_id) AND (tbl_books.Category_id = tbl_categories.Category_id)
WHERE tbl_books.Title LIKE '%$Search%'";
}
将所有if/else-if语句更改为这样。您所做的是使用if语句来决定变量$sql
将包含哪个查询
然后,在所有if语句之后,您可以发送$sql
查询,如我上面所示。如果查询中有错误,If($result==false)
部分将把mysql的投诉输出到屏幕上,这将帮助您调试查询。什么是“似乎没有检索数据”?你试的时候发生了什么?你得到了不正确的结果吗?你没有得到结果吗?如果结果不正确,是什么导致结果不正确?你在期待什么?你得到正确的结果了吗?如果是,它们是什么?不要让我们猜测。每当我加载页面时,就会出现以下语句:解析错误:语法错误,在C:\xampp\htdocs\book\u catalog\indexV4.php的第82行出现意外的“{”也许您应该查找{在第82行。第#1课寻求帮助时:如果您收到错误消息,那么您必须将错误消息包含在您的帮助请求中。对于试图帮助调试您的问题的任何人来说,这是唯一最有用的工具。是的,我知道我有两次,但我想不出任何其他方法来查看它是否有效。请您解释一下y这不安全,我是一名高中生,以前从未学过这方面的知识。将$con更改为$sql会有什么作用?正如我对invisal所说,我只是一名高中生,所以你可能需要先把一些东西弄哑,然后再把一些东西弄哑