0

警告:mysql_fetch_array() 期望参数 1 是资源,第 19 行 C:\xampp\htdocs\test\index.php 中给出的字符串

 <?php
 $con = mysql_connect('localhost');
 if (!$con)
   {
   die('Could not connect: ' . mysql_error());
   }


 mysql_select_db("schedule", $con);

 $sql = "SELECT * FROM classes LIMIT 0,50\n";

 mysql_query($sql);

 IF (!$sql) {
   ECHO 'broken';
 };

 while($row = mysql_fetch_array($sql, MYSQL_BOTH))
   {
   echo $row['language'] . " " . $row['level'];
   echo "<br />";
   }

 mysql_close($con);
 ?> 

为什么?查询在 phpmyadmin 中有效

4

4 回答 4

4

mysql_fetch_array() 函数的参数是您的 SQL 语句字符串。这就是你的警告所说的。您应该首先使用 $res = mysql_query($sql); 并将 $res 作为参数传递给 mysql_fetch_array()

于 2012-10-28T22:49:54.103 回答
1

mysql_fetch_Array 的输入是一个资源,也是 mysql_query 的返回值。如果将值 $sql 传递给 mysql_query(),它不会修改参数,因为它是按值传递的。您必须将返回值分配给另一个变量,这将是所需的资源。

  $result = mysql_query($sql);

然后,将结果参数传递给 mysql_fetch_array :

  $row = mysql_fetch_array($result, MYSQL_BOTH)

另一个重要说明:正如您在所有相关线程中看到的那样,请阅读php.net中的红色框以了解这些功能。

不鼓励使用此扩展程序。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

mysqli_query() PDO::query()

于 2012-10-28T23:03:36.377 回答
0

更改:mysql_query($sql); 到:$sql = mysql_query($sql);

于 2012-10-28T22:51:33.017 回答
0

引用自 PHP.net 关于mysql_query()

对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 成功时返回资源,错误时返回 FALSE。

对于其他类型的 SQL 语句,INSERT、UPDATE、DELETE、DROP 等,mysql_query() 在成功时返回 TRUE,在错误时返回 FALSE。

在您的情况下,资源被退回,但您忘记将其分配给任何东西。

更改mysql_query($sql)$resource = mysql_query($sql)

完整的文档在这里: http: //php.net/manual/en/function.mysql-query.php

于 2012-10-28T22:59:58.393 回答