以下是一段来自《PHP和MySQL Web开发》P202的代码,我运行此代码时出现错误,跳转页面显示“此程序无法显示”,菜鸟求大侠们帮忙啊
<?php error_reporting(E_ALL) ; ini_set('display_errors',1); ?>
<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
// create short variable names
$searchtype=$_POST['searchtype'];
$searchterm=trim($_POST['searchterm']);
if (!$searchtype || !$searchterm) {
if (!$searchtype ) {
echo 'You have not entered search details.  Please go back and try again.(searchtype)';
echo "<br />";
}
if (!$searchterm) {
echo 'You have not entered search details.  Please go back and try again.(searchterm)';
}
exit;
}

if (!get_magic_quotes_gpc()){
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}

@ $db = new mysqli('Yee', 'bookorama', 'bookorama123', 'books');
if (mysqli_connect_errno()) {
echo 'Error: Could not connect to database.  Please try again later.';
exit;
}

$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);
$num_results = $result->num_rows;
echo "<p>Number of books found: ".$num_results."</p>";
for ($i=0; $i <$num_results; $i++) {
$row = $result->fetch_assoc();
echo "<p><strong>".($i+1).". Title: ";
echo htmlspecialchars(stripslashes($row['Title']));
echo "</strong><br />Author: ";
echo stripslashes($row['Author']);
echo "<br />ISBN: ";
echo stripslashes($row['ISBN']);
echo "<br />Price: ";
echo stripslashes($row['Price']);
echo "</p>";
}
$result->free();
$db->close();
?>
</body>
</html>
经过测试,我发现是fetch_assoc()的问题,我改成mysqli_fetch_array($resualt,MYSQL_NUM)就没有问题,但这样下标要改成数字查询,体现不了关联优越性,所以我又改成mysqli_fetch_array($resualt,MYSQL_ASSOC),并把下标改回关联字符,结果还是“此程序无法显示”。我用的PHP是5.2.6的,mysql是5.1.50,apache是httpd-2.2.16-win32-x86-openssl-0.9.8o.msi

解决方案 »

  1.   

    mysqli_fetch_assoc($resualt);或者mysqli_fetch_array($resualt,MYSQLI_ASSOC);//少个I
      

  2.   


    $row = $result->fetch_assoc();
    后面加上一句
    print_r($row);帖出结果
      

  3.   

    就是这样的$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
      

  4.   

    错误:  此程序无法显示网页 
       
       最可能的原因是:
       未连接到 Internet。 
       该网站遇到了问题。 
       在地址中可能存在键入错误。 
     
       您可以尝试以下操作: 
         检查您的 Internet 连接。尝试访问其他网站以确保已连接到 Internet。  
     
         重新键入地址。  
     
         返回到上一页。 
     
         更多信息 
     
      

  5.   

    我改成这样:$row = mysqli_fetch_assoc($result);
    print_r($row);错误信息一样的
      

  6.   

    $row = $result->fetch_fields();
    print_r($row);
      

  7.   

    出现以下东东
    Number of books found: 1Array ( [0] => stdClass Object ( [name] => isbn [orgname] => isbn [table] => books [orgtable] => books [def] => [max_length] => 13 [length] => 13 [charsetnr] => 8 [flags] => 20483 [type] => 254 [decimals] => 0 ) [1] => stdClass Object ( [name] => author [orgname] => author [table] => books [orgtable] => books [def] => [max_length] => 14 [length] => 50 [charsetnr] => 8 [flags] => 0 [type] => 254 [decimals] => 0 ) [2] => stdClass Object ( [name] => title [orgname] => title [table] => books [orgtable] => books [def] => [max_length] => 34 [length] => 100 [charsetnr] => 8 [flags] => 0 [type] => 254 [decimals] => 0 ) [3] => stdClass Object ( [name] => price [orgname] => price [table] => books [orgtable] => books [def] => [max_length] => 5 [length] => 4 [charsetnr] => 63 [flags] => 32768 [type] => 4 [decimals] => 2 ) ) 
      

  8.   

    本帖最后由 xuzuning 于 2010-09-25 12:06:46 编辑
      

  9.   

    这就奇怪了,等待高人吧,或许高人也不知道这不该出现的问题,也或许是php自身的原因
      

  10.   

    $row = $result->fetch_array();
    print_r($row);贴出结果
      

  11.   

    和以下的代码出现一样的错误,如6楼所示
    $row = mysqli_fetch_assoc($result);
    print_r($row);
      

  12.   

    那就试一试mysql_connect()吧,其实mysqli的运行效率要低于mysql的,楼主试一试吧,如果还是不行的话楼主就死心吧,估计那时mysqli找你的茬的
      

  13.   

    在网上找到这么一篇文章:困扰一个多星期的“Fatal error: Call to undefined function mysql_connect() in”的故障最终解决方法安装配置以Windows 2003 server为例,理论上说windows2000 与Windows XP是一个道理的。 
      一、首先按照网络上很多类似文章的方法去设置PHP,目的是让IIS能够支持PHP运行。
          1.下载php5解压版软件如php-5.2.1-win32.zip。解压该文件到你想要安装的目的目录中如,D:\Myphp\php5,事先请建好文件夹; 
          2.将D:\Myphp\php5目录下的php.ini-dist文件改名为php.ini,并把php.ini文件复制到C:\windows目录下,Windows2000的目录应该为C:\winnt。 
          3.在D:\Myphp\php5目录下找到php5ts.dll、libmysql.dll、libmcrypt.dll三个文件复制到C:\windows\system32\目录下。 
          4.修改C:\windows\php.ini文件,将以下几行值前面的“;”去掉。  
          ;extension=php_mbstring.dll 
          ;extension=php_gd2.dll
          ;extension=php_mysql.dll
          ;extension=php_mcrypt.dll
          另针extension_dir="./"改成 extension_dir="D:\Myphp\php5\ext"  
          保存文件,可能看到这里你认为都与其它的操作版本一样。是的,继续往下看,等会儿还修改到此文件的。 
          5.修改Windows server 2003的IIS信息管理服务器。 
            a.点击"ISAPI筛选器",再点击“添加”,在弹出的“筛选器属性”对话框中,依次填入筛选器名称“PHP”,可执行文件“D:\Myphp\php5\php5isapi.dll”,然后点击“确定”退出;(注意,有些需要修改“所有未知ISAPI扩展”开起,选中该选项,在左边点击“允许”。)
            b.点击“主目录”标签,再点“浏览”,把网站目录指向到你的网站目录下,如D:\www。再在“主目录”标签下点击“配置”--->应用程序配置--->添加--->添加/编辑应用程序扩展名映射  对话框中,在可执行文件位置输入“D:\Myphp\php5\php5isapi.dll”,在扩展名处输“PHP”,确定。 
            c.修改首页默认内容文档。点击“文档--->添加--->添加默认文档--->填入index.php--->确定。
      到此处第一大步应该顺利安装完成,在D:\www目录下新建一个文件如test.php,编辑内容在里面加入以下几句。 
        保存,在浏览器中输入“http://localhost/test.php”应该会显示PHP所有的配置信息。这样就算PHP安装成功,若有不成功的请继续前面操作。     二、安装Mysql5    
          从网络上下载Mysql for windows版本软件。如mysql-essential-5.0.27-win32.msi可以从官方网站上找到。 
        安装步骤:  双击运行-->Next-->选择Custion-->Next-->Change..选择安装路径-->Next-->Install-->选择"Skip Sing-Up"-->Next-->默认点Finish进入配置向导-->Next-->选择"Detailed Configuration"-->Next-->选择Server Machine-->Next-->选择Non-Transactional Database Only-->Next-->选择Manual Setting 设置连接数如150-->Next-->同时选择"Enable TCP/IP Networking","Enable Strict Mode"端口默认3306-->Next-->选择"Manual Selected Default Character Set/Collation" Character Set为gb2312-->Next-->默认界面再选中"Include Bin Directory Windows PATH"-->Next-->"Modify Security Settings"设置Root密码-->Next-->Execute-->提示安装成功点击Finish. 
        测试Mysql,在命令行下输入“mysql -uroot -p”然后安提示输入密码进入">"提示,用Show databases;等命令测试。 
        到此单个Mysql服务也安装完成  
        三、调试PHP与MYSQL连接。 
          最关键的时候来了。一般配置到此我们写一个数据库调用语句来测试一下,在D:\www目录新建connect.php文件,将以下内容复制进去 
          <html>
            <head>
            <title>连接数据库</title>
            </head> 
            <body>  
            <?php 
                $link = mysql_connect('localhost', 'root', '123456');//创建连接
                if ($link) //如果连接失败 
                  { 
                    echo '服务器的基本信息是:' .mysql_get_host_info($link);  
                  } 
                else//数据库连接成功
                  { 
                    echo '连接失败:';
                  }
                mysql_close($link);  //关闭连接
            ?>  
            </body> } 
          </html>  
          在浏览器中打开http://lcoalhost/connect.php肯定会出现“Fatal error: Call to undefined function mysql_connect() in ......”的提示,那说明数据库连接有问题。我们仔细查一般的这样的提示都在第一个出现“mysql_connect”这个函数的这一行上。
          在网络上查找相关问题,几乎反边Google Baidu相关问题很多提出解决办法也很多,但本来测试一个多星期基本找遍了Googl与Baidu都没能有好的办法
          后来在想,以前用Asp与Access时都有PDO之类的东西,难道这个也相似,于是打开php.ini文件将数据库相关的几个参数都开启。问题解决了,将以下几个前面去掉“;”
          ;extension=php_dba.dll 
          ;extension=php_gd2.dll   
          ;extension=php_mbstring.dll 
          ;extension=php_mcrypt.dll  
          ;extension=php_mysql.dll  
          ;extension=php_mysqli.dll
          ;extension=php_pdo.dll
          ;extension=php_pdo_mysql.dll
        保存文件,重启IIS,OK。
    然后我做的就是将php5ts.dll、libmysql.dll、libmcrypt.dll 3个文件复制到了上述目录,并将以下前面的“;”去掉了,然后就OK了!哈哈!历经几天的折磨,结果终于是出来了,问题也解决了,虽然大家没点到位,但还是感谢各位了呵呵