【问题标题】:mysql_fetch_array(): supplied argument is not a valid MySQL result resource... [snip] [closed]mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源... [snip] [关闭]
【发布时间】:2014-10-13 15:40:05
【问题描述】:

这是错误:

警告:mysql_fetch_array():提供的参数不是第 21 行 /home/a1797699/public_html/event_details.php 中的有效 MySQL 结果资源

这是失败的代码:

<?php
include dirname(__FILE__).'/db_connection.php';
$eventid = $_GET['id'];
$user = $_SESSION['account'];
$sqlevents = "SELECT * FROM events WHERE ID = $eventid";

?>
<html>
<body>

<?php include dirname(__FILE__).'/Header.php'; ?>

<div class="wrapper">
    <div class="contentleft"> <?
        while($event = mysql_fetch_array($sqlevents)){ //===ERROR
            ?>
            <table  align="center" style="color:white;">
                <th colspan="2"><? echo $event['title']; ?></th>
                <tr>
                    <td>Date</td>
                    <td><? echo $event['date']; ?></td>
                </tr>
                <tr>
                    <td>Discription</td>
                    <td><? echo $event['discription']; ?></td>
                </tr>
                <tr>
                    <td>Created On</td>
                    <td><? echo $event['created on']; ?></td>
                </tr>
                <tr>
                    <td>Created By</td>
                    <td><? echo $event['created by']; ?></td>
                </tr>
                <tr>
                    <td>Participants</td>
                    <td>
                    </td>
                </tr>
                <tr>
                    <td colspan="2"><a href="?adduser=<? echo $user; ?>&id=<? echo $eventid; ?    >">Sign up</a></td>
                </tr>
            </table> <?
        } ?>
    </div>
    <div class="contentright">
        <?php include dirname(__FILE__).'/infopannel.php'; ?>
    </div>
</div>

<?php include dirname(__FILE__).'/footer.php'; ?>

</body>
</html>

【问题讨论】:

  • 错误信息是什么?
  • 警告:mysql_fetch_array():提供的参数不是第 21 行 /home/a1797699/public_html/event_details.php 中的有效 MySQL 结果资源
  • 不要使用 mysql_* 使用 mysqli 或 PDO...而且您甚至还没有执行查询...您需要在获取之前执行它

标签: php mysql sql loops while-loop


【解决方案1】:

您试图在字符串上使用mysql_fetch_array,但它却排除了资源句柄。

include dirname(__FILE__).'/db_connection.php';
$eventid = $_GET['id'];
$user = $_SESSION['account'];
$sqlevents = "SELECT * FROM events WHERE ID = $eventid";
$result = mysql_query($sqlevents);

// ....

while($event = mysql_fetch_array($result)){/* ... */ }

但是,如果现在没有人告诉您这一点,您不应该使用 ext/mysql 扩展名。它已弃用,请改用PDOmysqlimysqli 有一个类似于 ext/mysql 的 api ver 并支持 MySQL 的更多功能.. 但 PDO 更容易与 IMO 一起使用。

与 PDO 相同:

$db = new PDO($dsn, $user, $pass);
$stmt = $db->prepare('SELECT * FROM events WHERE ID = ?');
$stmt->execute(array($eventid));

while (false !== ($row = $stmt->fetch(PDO::FETCH_ASSOC))) { /* ... */ }

【讨论】:

  • 也许添加他可以做些什么来解决这个问题?使用查询然后将结果返回到数组并在 result_array 上执行 mysql_fetch_array
  • 也许还告诉 OP 一个更好的方法来做到这一点,即不要使用 mysql_*
  • 正在编辑我的朋友 :-)
  • 哇,我怎么忘了这个……感觉好蠢:S thnx!
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多