php搜索字段不起作用

时间:2015-12-17 03:29:18

标签: php mysqli

我已经看到了一个非常喜欢的,与我在这个网站上的相同,以及网络上的其他人。但是,在多个论坛和youtube上花了三天后,我的脚本似乎无法正常工作。

我已经构建了一个简单的页面,可以让我跟踪我的车辆里程,我希望能够按位置搜索表格。除搜索功能外,一切正常。该表显示在页面上,填充了sql表中的所有行。但是,当我在搜索字段中键入并单击“提交”时,不会显示搜索结果。什么都没发生。

为了帮助你,我会发布我的代码以及我的服务器,php版本和mysql版本。

  

phpMyAdmin:4.0.10.7

     

数据库服务器:

     

服务器:通过UNIX套接字的Localhost

     

服务器类型:MySQL

     

服务器版本:5.5.46-cll - MySQL社区服务器(GPL)

     

协议版本:10

     

服务器字符集:UTF-8 Unicode(utf8)

     

Web服务器:

     

cpsrvd 11.52.1.3

     

数据库客户端版本:libmysql - 5.1.73

     

PHP扩展:mysqli

<?php
session_start();
if(empty($_SESSION['user']))
{
echo "      <script>window.top.location='https://mysitehere.com/milelog/login/login2.php'</script>";
exit;
}
?>

<?php
include_once 'carselect/function.php';
connect()
?>

<?php
//The File for the Database Connection
include('editentry/con.php');

//The SQL Query
$table = "SELECT * FROM milelog ";

If($_POST){

$input = mysql_real_escape_string($_POST['location']);

$table .= "WHERE Location = '$input'";
}


$show = mysql_query($table) or die(mysql_error());


?>

<html>

<head>

<link rel="stylesheet" type="text/css" href="css/milestyle.css">

</head>

<body class="body">
<div style="border: 1px solid; background-color: silver;"><div class="menuwrap"><ul class="sonarmenu" style="padding: 0 !important;">
<li><a href="addentry.php">Log</a></li>
<li><a href="addcar.php">Add Car</a></li>
<li><a href="list.php">Edit Entry</a></li>
<li><a href="login/logout.php">Log Out</a></li>
</ul>
</div></div>

<form name="search" action="search.php" method="post">
<input name="location" value="" type="text" />
<input type="submit" value="search" name"search" />
</form>

<table class="table">
<tr>
<td>ID</td>
<td>Car</td>
<td>Date</td>
<td>Location</td>
<td>Miles</td>
<td></td>
<td></td>
</tr> 
<?php while ($row = mysql_fetch_array($show)) {
echo "<tr><td>".$row['id']."</td>";
echo "<td>".$row['Car']."</td>";
echo "<td>".$row['Date']."</td>";
echo "<td>".$row['Location']."</td>";
echo "<td>".$row['Miles']."</td>";
echo "<td><a href='editentry/delete2.php?id=".$row['id']."'>Delete</a></td>    <tr>";
 }
?>
</table>


</body>
</html>

经过3天的研究而没有到达任何地方,我不知道还能做什么。

1 个答案:

答案 0 :(得分:0)

您正在使用$(function() { $languages = $("#languages"); $("#languages option").remove(); $languages.change(function() { var languageName = $(this).val(); _language = languageName; localStorage["language"] = languageName; }); for (var l in _languages) { $languages.append("<option>"+l+"</option>"); } }); deprecated in PHP 5.5.0 and removed in 7.0.0。以下更改将有效,但它不是真正的解决方案:

更改

mysql_real_escape_string

$input = mysql_real_escape_string($_POST['location']);

这仍然使您(甚至更多)容易受到SQL注入的攻击,因此您应该使用预处理语句。有关完整示例,请参阅the manual

请注意,如@self所示,测试$input = $_POST['location']; 不是检查帖子是否发生的正确方法。一个正确的方法是这个(详见this answer):

if($_POST)