首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP与模板与代码加密/优化 » [求助]有关php搜索的  


  作者:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

  ken.wang@esolux...
  185627321
  www.

 

 发表:2004-10-16 03:32:08 阅读 7514 次 回复 6 次 得分2  |   字号 字色
[求助]有关php搜索的
有关php搜索的:
search.html的主要代码如下
<form name="form1" method="POST" action="search.php">
  <p>选择:
    <select name="searchtype" id="searchtype">
  <option value="title" selected>标 题</option>
  <option value="content">内 容</option>
    </select>
关键字:
<input name="seachterm" type="text" id="seachterm">
<input type="submit" name="Submit" value="search">
</form>

search.php的主要代码如下
<?
$db=mysql_pconnect("localhost","root","123456");
mysql_select_db(eduction);
$query="select * from artical where ".$searchtype." like '%".$searchterm."%'";
$result=mysql_query($query);
$num=mysql_num_rows($result);
echo "<p>共有记录:".$num."</p>";
for ($i=0; $i<$num;$i++){
$row=mysql_fetch_array($result);
echo htmlspecialchars (stripslashes ($row["title"]));
echo htmlspecialchars (stripslashes ($row["content"]));
 }
?>
注:数据库eduction里有一表artical。表中有title和content两个字段

运行后有错误提示:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\www\1\search.php on line 14
不知道为什么?
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2004-10-16 22:12:10  评分:1 

错误提示的意思是:
  提供的参数不是一个有效的mysql结果资源。
   也就是说,$result不是一个资源型的纪录。
   也就是说,mysql_query($query)这个语句没有顺利执行。
  这可能与sql语句有关系。但是没有看出明显的错误。

我估计是参数的问题。
建议在search.php开始部分增加以下几行:
$searchtype=trim($_POST["searchtype"]);
$searchterm=trim($_POST["searchterm"]);

看看这样行不行。
 2#楼  
 
  回复人:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

   
 2#楼 发表于2004-10-17 04:43:12  评分:× 

这样是没有提示错误了.但不知道为什么不管输入什么内容,它就显示数据库里的全部记录,搜索的功能根本没有实现。 
 3#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 3#楼 发表于2004-10-17 18:34:49  评分: 

echo $query;
看看sql语句是不是正确的。
因为使用了% % 两个通配符,所以如果中间的变量为空的话,就会显示所有内容。
 4#楼  
 
  回复人:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

   
 4#楼 发表于2004-10-17 23:21:47  评分:× 

谢谢站长.
经过多次调试,我找的原因了.
 5#楼  
 
  回复人:Miyahoo
  注册时间:2004-04-04
  主题/回复:39/255
  积分:1210
  等级:★★★☆(七级)
  称号:论坛贤士

   
 5#楼 发表于2004-10-18 04:39:15  评分:1 

找到原因后要说出来,有朋友关注的呢。要为大家考虑。谢谢。
 6#楼  
 
  回复人:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

   
 6#楼 发表于2004-10-18 18:10:35  评分:× 

字段弄错了!下面是完整的代码;
search.html
<form name="form" method="POST" action="search.php" onSubmit="return formcheck();">
  <p>选择:
    <select name="searchtype" id="searchtype">
  <option selected>请选择</option>
  <option value="title">标 题</option>
  <option value="content">内 容</option>
    </select>
    <br>
关键字:
<input name="searchterm" type="text" id="searchterm">
 <input type="submit" name="Submit" value="search">
</form>
search.php
<?
$searchtype=trim($_POST["searchtype"]);
$searchterm=trim($_POST["searchterm"]);
if (!$searchtype || !$searchterm)
{
echo "you have not entered serch details.please go back and try again.";
exit;
}
$searchtype=addslashes($searchtype);
$searchterm=addslashes($searchterm);
 @$db=mysql_pconnect("localhost","root","123456");
mysql_select_db(eduction);
$query="select * from artical where ".$searchtype." like'%".$searchterm."%'";
$result=mysql_query($query);
$num=mysql_num_rows($result);
echo "<p>共有记录:".$num."</p>";
for ($i=0; $i<$num;$i++){
$row=mysql_fetch_array($result);
echo "<p><strong>".($i+1).".标题:";
//echo "<br>标题:";
echo htmlspecialchars (stripslashes ($row["title"]));
echo "</strong>";
echo "<br>内容:";
echo htmlspecialchars (stripslashes ($row["content"]));
echo "</p>";
 }
?>
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.009sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版