我发现俺的表单,不知怎么搞的,这是一个查询的例子,代码如下:表单 searchbook.htm      及 处理文件results.php
<form action="results.php" method="POST">
          请选择搜索类型:<br>
          <select name="searchtype" >
               <option value="author">作者</option>
               <option value="title">标题</option>
               <option value="isbn">书号</option>
          </select>
          请输入搜索内容:<br>
            <input type="text" name="searchterm"><br>
            <input type="submit" value="搜索">
</form>
 <?php
         $searchtype=$_POST['searchtype'];
         $searchterm=$_POST['searchterm'];
         $searchterm=trim($searchterm);
         if(!$searchtype || !$searchterm)
         {
               echo '你没有输入搜索信息,请返回并重试!';
               exit;
         }
          
         if(!get_magic_quotes_gpc())
         {
              $searchtype=addslashes($searchtype);
              $searchtype=addslashes($searchterm);
         }
        
         @ $link=mysqli_connect("localhost","root","173223","books");
          
         if(mysqli_connect_errno())
         {
             echo 'error:不能连接数据库,请稍后再试.';
             exit;
         }
         $query="select * from books where" .$searchtype. "like '%".$searchterm."%'";
        
         $result=mysqli_query($link,$query);
           
         $num_results=mysqli_num_rows($result);
          
         echo '<p>找到书的数量:'.$num_results.'</p>';
         
         for($i=0;$i < $num_results;$i++)
         {
               $row=mysqli_fetch_assoc($result);
               echo '<p><strong>'.($i+1).'.title:';
               echo htmlspecialchars(stripslashes($row['title']));
               echo '</strong><br>作者:';
               echo stripslashes($row['author']);
               echo '<br>isbn:';
               echo stripslashes($row['isbn']);
               echo '<br>price:';
               echo stripslashes($row['price']);
               echo '</p>';
         }
           
           mysqli_free_result($result);
           mysqli_close($link);
?> 
    俺点击提交后,浏览器把result.php 代码打开了,并没有执行它,为何??????
    上传文件的例子也是这样,upload.htm 是表单,upload.php是处理文件,不过俺把表单放在upload.php中,就可以运行了。

解决方案 »

  1.   

    当会出现PHP源码的时间
    一般都是WEB服务器没有解析PHP
    如果你的是Apache的话 建议看下这个http://topic.csdn.net/u/20080507/14/dfad2af2-8895-4c1d-873e-819a7fbfa682.html1、假设WEBServer目录为D:/WebServer,分别安装Apache2、Mysql5到该目录下,同时解压php到该目录
       假设WEB目录E:/WEB/PHP
    2、复制libmysql到Apache目录下的bin目录,同时添加支持php5的配置
    #For PHP 5 do something like this:
    PHPIniDir "D:/WebServer/php5"
    LoadModule php5_module "D:/WebServer/php5/php5apache2.dll"
    (注:php5apache.dll,php5apache2.dll,php5apache2_2.dll; 
    这三个文件分别对应apache的版本为:Apache1,Apache2.1.*,Apache2.2.*
    )AddType application/x-httpd-php .php
    <IfModule mod_mime.c>
    AddType application/x-httpd-php .php .php3
    AddType application/x-httpd-php-source .phps
    </IfModule>
    3、添加解析名
       DirectoryIndex index.htm index.php index.html index.php3 index.html.var
    4、添加默认目录
       DocumentRoot "E:/WEB/PHP"
        <Directory "E:/WEB/PHP">
    5、复制php.ini-dist后重命名为php.ini并修改以支持mysql
       添加扩展目录extension_dir = "D:\WebServer\php5\ext\"
       去掉extension=php_mysql.dll前注释
      

  2.   

    【个人意见,仅供参考】看看这个
             if(!$searchtype  ¦ ¦ !$searchterm) 
             { 
                   echo '你没有输入搜索信息,请返回并重试!'; 
                   exit; 
             } 
            
    把其中的 ¦ ¦    改成 ||()
      

  3.   

    那我的有一个上传文件的例子,把表单和处理文件放在一起,为何apache就能解析呀!俺用的是appserv,好像不用怎么设置吧!
      

  4.   

    俺把 result.php前七行代码注释掉后(就是从开始--检测用户是否输入搜索信息,为止),手工第加上输入信息$searchtype='title';$searchterm='java';然后单独运行results.php,总是报错:mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\AppServ\www\results.php on line 28
    找到书的数量:Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in C:\AppServ\www\results.php on line 46
    我测试一下,发现mysqli_connect()怎么返回对象型变量,$result=mysqli_query()怎么返回bool型了,这不对劲呀!