【发布时间】:2015-01-28 19:39:46
【问题描述】:
我已经编写了一个基本的 PHP 站点,它将参数从一个页面传递到另一个页面并查询 mysql 数据库。
我已经检查过参数已经通过了,但是查询中的 where 参数似乎不起作用。有人可以帮忙吗?
该网站是 www.retroseek.co.uk,搜索框位于底部。非常感谢。
<!DOCTYPE html>
<html>
<head>
<title>Retro Computing Resource - RetroSeek Search</title>
<meta charset="UTF-8">
<style>
table, td, th {
border: 1px solid green;
}
th {
background-color: green;
color: white;
}
</style>
</head>
<body>
<h1>Results from the RetroSeek Search Engine</h1>
<?php
echo "<h1>Testing the GET has worked " . $_GET["query"] . "</h1>";
require( '../connect_db.php' ) ;
$query = $_GET['query'];
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
echo "<h1>Testing the GET has worked " . $_GET["query"] . "</h1>";
$min_length = 4;
// you can set minimum length of the query if you want
$q = "SELECT fgames.fgname, fgames.fgprorg, fgames.fgprbud, fgames.fgratng, fgames.fgprdsk, ftypes.fttname, frefs.fryymm, frefs.frpage, frefs.frissue, fmagzne.fmname, frefcde.ffname
FROM fgames, ftypes,frefs, fmagzne,frefcde
WHERE ftypes.fttype = fgames.fgtype
and fgames.fglink = frefs.frlink2
and frefs.frentry = frefcde.ffentry
and frefs.frmag = fmagzne.fmmag
and fgames.fgname LIKE '%".$query."%'" ;
$r = mysqli_query( $dbc , $q ) ;
if( $r )
{
echo '<table><tr><th>FGNAME</th><th>FGPRORG</th><th>FGRBUD</th><th>FGRATNG</th><th>FGRDSK</th><th>FTTTNAME</th><th>FRYYMM</th><th>FRPAGE</th><th>FRISSUE</th><th>FMNAME</th><th>FFNAME</th></tr>';
while ( $row = mysqli_fetch_array( $r , MYSQLI_ASSOC ) )
{
echo '<tr><td>'.$row['fgname'].'</td><td>'.$row['fgprorg'].'</td><td> '.$row['fgprbud'].' </td><td>'.$row['fgratng'].' </td><td>'.$row['fgprdsk'].' </td><td>'.$row['fttname'].'</td><td> '.$row['fryymm'].'</td><td> '.$row['frpage'].'</td><td> '.$row['frissue'].' </td><td>'.$row['fmname'].' </td><td>'.$row['ffname'].'</td></tr>';
}
echo '</table>';
}
else
{
echo '<p>' . mysqli_error( $dbc ) . '</p>' ;
}
show_records($dbc);
# Close the connection.
mysqli_close( $dbc ) ;
?>
<h3>Contact me at jonesypeter@hotmail.com if you would like any information on my plans for this website. Please send me as much feedback and suggestions as possible.</h3>
<h4>Last updated on 28 January 2015</h4>
</body>
</html>
【问题讨论】:
-
您可以回显 $q 并将其粘贴到您的问题中吗?与 $_GET["query"] 一样吗?
-
您正在混合使用
mysql_*和mysqli_*函数。那是行不通的。 -
不要应用多层转义。转义数据仅用于您应用它的用途。具体来说,删除此
$query = htmlspecialchars($query);。在向浏览器输出数据时应用它。 -
如果在 LIKE 中将 '%".$query."%' 替换为硬编码值,查询是否有效?