PHP与while和mysql_fetch_array冲突?

时间:2013-11-29 18:36:25

标签: php

这是我的代码,我遇到了问题,因为当我在WAMP中运行时,会发生这种情况:

  

警告:Mysql_num_rows()期望参数1为资源

     

警告:mysql_fetch_array()期望参数1为资源

Full error)。

    <?php
    mysql_select_db("spectrum-solaris",$conex);
    $query = mysql_query("SELECT id,name,tittle,body FROM articles ORDER BY id             DESC",$conex);
    $row = mysql_num_rows($query);
    if($row > 0 ){
    while($row = mysql_fetch_array($query))
    {
    ?>
    <div class ="tematica" >
    <p>
    <small>Published by <b><a href="user.php"><?= $row['name'] ?></a></b></small>
    </p>
    <p>
        <big><a href="show.php"><?= $row['tittle'] ?></a></big>
    </p>
    <p>
        <b><?=$row['body']?></b>
    </p>        
    </div>
    <?php
    }
    }
    mysql_free_result($query);
    mysql_close($conex);

3 个答案:

答案 0 :(得分:1)

函数mysql_num_rows()mysql_fetch_array()需要正在评估的结果资源。此结果来自对mysql_query()的调用。

所以你需要修改你的代码。首先在mysql_num_rows插入后使用mysql_fetch_array$query = '...' $result = mysql_query($query); 然后您可以运行mysql_num_rows($result)mysql_fetch_array($result)

您的错误会导致您向mysql_num_rowsmysql_fetch_array提供的数据不是资源类型。

我建议您开始使用PDO而不是mysql_* functions

答案 1 :(得分:0)

mysql_num_rowsmysql_fetch_array期望有效资源。 这通常来自mysql_query,就像你一样。

但是您的mysql_query首先失败,因为您从未连接到您的数据库,至少在此代码段中。

请参阅,

mysql_select_db("spectrum-solaris",$conex);

$ conex应该是对mysql_connect()

的引用

更改,

<?php
    mysql_select_db("spectrum-solaris",$conex);

要,

<?php

$conex = mysql_connect('host', 'username', 'password');
mysql_select_db("spectrum-solaris",$conex);

答案 2 :(得分:-1)

由于你没有指明错误,我只需要一个刺:

此代码不会解析,因为它不正确。

<b><?=$row['body']?></b>

也许应该是这样的:

<b><? echo($row['body']); ?></b>

也许。您的页面中还有其他几个类似的错误。

还有两件事:

  1. 尽量不要像这样混合使用PHP和HTML。您的代码不是网站上最糟糕的攻击者,但随着脚本变得越来越复杂,它将变得越来越难以调试。

  2. cHao用mysql_敲诈钱请使用mysqli_或PDO这两者都有很多优点,其中最重要的是它们是目前推荐的形式。 mysqli_并不比mysql更难使用,您在级别上会发现的唯一区别是需要在某些函数中指定连接。