Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索功能在本地主机上工作,但在服务器上不工作_Php_Mysql - Fatal编程技术网

Php 搜索功能在本地主机上工作,但在服务器上不工作

Php 搜索功能在本地主机上工作,但在服务器上不工作,php,mysql,Php,Mysql,我正在尝试向我的网站添加搜索功能。现在它还很初级,搜索只是使用select从MySQL中提取结果。问题是,当我在本地主机上测试它时,搜索效果很好,但当我把它放到服务器上时,搜索根本不起作用。当使用它时,它只选择整个数据库。我相信问题在于变量没有传递到搜索结果页面,但我不知道 这是搜索框的代码。它位于名为“header.php”的引用文件中: 正如我所说,当我在我的本地主机上使用它时,它工作得非常好,只返回标题与搜索匹配的行。但是,当我把它放在服务器上时,它会返回表中的所有行。尝试打印出查询,看看

我正在尝试向我的网站添加搜索功能。现在它还很初级,搜索只是使用select从MySQL中提取结果。问题是,当我在本地主机上测试它时,搜索效果很好,但当我把它放到服务器上时,搜索根本不起作用。当使用它时,它只选择整个数据库。我相信问题在于变量没有传递到搜索结果页面,但我不知道

这是搜索框的代码。它位于名为“header.php”的引用文件中:


正如我所说,当我在我的本地主机上使用它时,它工作得非常好,只返回标题与搜索匹配的行。但是,当我把它放在服务器上时,它会返回表中的所有行。

尝试打印出查询,看看它是否正确地注入了$search值(如果search不是null)


我在给定的代码中看不到任何可能导致此问题的内容。我认为你的分析是正确的;我可以想象,
$\u GET['query']
出于某种原因是空的

通过显式检查,您可以使代码更加健壮:您希望这是一种错误情况,而不是“返回所有内容”。但除了证实你的理论,这并不能彻底解决问题

我唯一能想到的就是确保服务器上存在
$\u GET
;它出现在PHP4.1.0中,这已经是很久以前的事了。不过,远程服务器上的PHP可能还是很古老的

祝你好运


更新

您使用的是
mysql\u real\u escape\u string
,在建立连接之前。如果没有,则尝试使用默认参数,该参数在本地计算机上工作,但在[可能更安全]的生产服务器上不工作

这会导致转义失败,并将
FALSE
写入
$query


只需使用不需要连接的
mysql\u escape\u string

请提供完整且格式化的代码。您没有提供
searchSubmit()
的正文,这很重要。好的,对不起,我是新手,我认为代码越少越好。我将发布完整的代码。@Frzibee:不,你是对的,缩小测试用例的范围是好的。发布所有生产代码是错误的。然而,由于
searchSubmit()
是在您的测试用例中调用的,因此可能是相关的,包括一个缩小的版本也会很有帮助。(不过,请注意,我相信我已经解决了这个问题,它与该函数无关……所以现在不必麻烦了。:D)在localhost上:“从标题为“%apple%”的ideas中选择*按发布日期描述排序。”在服务器上:“从标题为“%”的ideas中选择*按发布日期描述排序。”由于某些原因,它没有正确传递变量。请尝试打印($\u GET)以查看传输的数据有趣-它仍然返回数组([query]=>idea)就像我的本地主机一样。为什么不把它传递到我试图使用的变量中呢?也许问题出在mysql\u real\u escape\u字符串中。尝试$search=sprintf('%s',$\u GET['query']);并注释掉//$search=mysql\u real\u escape\u string($search);这不可能是问题所在,因为我在另一个页面上使用了$\u GET,它工作正常。此外,我在页面中添加了一个错误检查,问题肯定是变量为空。$\u GET不起作用。更新有意义,谢谢。它也符合我的发现,即如果我在$u GET之前建立连接,它会工作得很好。@Frizbee:太好了!顺便说一句,
$\u GET
不是一个函数或“动作”;它是数组变量的名称。只是想让你知道。
<html>
<head>

<body>
<div class="title"><img style="width:100%;" src="title.gif" /></div>
<div class="search">Search: 
<form style="display:inline" name="search" action="search.php" method="get"><?php echo"         <input type='text' name='query' />";?>
<a href="javascript: searchSubmit()"><img src="seo.png" alt="Search" title="Search" />   </a></form></div>
<ul class="menu">
<li><a href="index.php#home">home</a></li>
<li><a href="submit.php?title=&desc=">post an idea</a></li>
<li><a href="#about">about us</a></li>
<li><a href="#contact">contact us</a></li>
<li><a href="login.php">log in</a></li>
</ul>

</body>
</html>
<?php
$search=$_GET['query'];
$search=mysql_real_escape_string($search);
?>
<html>
<head>
<?php
echo "<title>Search: $search</title>";
?>
<link rel="stylesheet" type="text/css" href="mainstyle.css" />
<script type="text/javascript" src="validate.js"></script>
</head>
<body>
<div class="title"><img style="width:100%;" src="title.gif" /></div>
<div class="search">Search: 
<form style="display:inline" name="search" action="search.php" method="get"><?php echo"    <input type='text' name='query' value='$search'/>";?>
<a href="javascript: searchSubmit()"><img src="seo.png" alt="Search" title="Search" /></a></form></div>
<ul class="menu">
<li><a href="index.php#home">home</a></li>
<li><a href="submit.php?title=&desc=">post an idea</a></li>
<li><a href="#about">about us</a></li>
<li><a href="#contact">contact us</a></li>
<li><a href="login.php">log in</a></li>
</ul>
<?php

mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("date_ideas") or die(mysql_error());

$result=mysql_query("SELECT * FROM ideas WHERE title LIKE '%".$search."%' ORDER BY    post_date DESC");
echo "SELECT * FROM ideas WHERE title LIKE '%".$search."%' ORDER BY post_date DESC";

echo "<span id='none'>";
while($row = mysql_fetch_array($result))
{
$id=$row['id'];
echo "<h2 class='center'><a href='ideaview.php?id=$id' title='View ".$row['title']."     Description'>" . $row['title'] . "</a><br/>";
echo "<span class='date'>";
$date=$row['post_date'];
$time=time();

if (($time-$date)<120)
{
echo "Posted 1 minute ago";
}

else if (($time-$date)>120&&($time-$date)<3600)
{
$minutes=($time-$date)/60;
echo ("Posted " . round($minutes) . " minutes ago");
}
else if (($time-$date)>3600&&($time-$date)<7200)
{
echo "Posted 1 hour ago";
}
else if (($time-$date)<86400&&($time-$date)>7200)
{
$hours=($time-$date)/3600;
echo ("Posted " . round($hours) . " hours ago");
}
else if (($time-$date)<172800&&($time-$date)>86400)
{
echo "Posted 1 day ago";
}
else
{
echo ("Posted on " . date("m-d-y",$date));
}
echo "</span></h2>";
}
echo "</span>";
?>

<script type="text/javascript">
document.getElementById("none");
if (none.innerHTML == "")
{
none.innerHTML="<p class='center'>There are no ideas matching your search</p>";
}
</script>
</body>
</html>
var valid=true;

function validate(field, helptext, type, min, max, field1)
{
var x=field.value;
var text=document.getElementById(helptext);
if (x==null || x=="")
{
if (text!=null)
    {
    text.innerHTML="Please input "+field.id;
    }
valid=false;
}
else if (type=="length")
{
valLength(min,max,field,helptext);
}
else if (type=="email")
{
valEmail(field,helptext);
}
else if (type=="pass")
{
valPass(field, field1, helptext);
}
else
{
if (text!=null)
    {
    text.innerHTML="";
    }
valid=true;
}
}

function searchSubmit()
{
validate(search.query);
if (valid==true)
{
search.submit();
}
else
{
alert("Please enter a search term");
}
}
echo "SELECT * FROM ideas WHERE title LIKE '%".$search."%' ORDER BY post_date DESC";