警告: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
答案 0 :(得分:4)
mysql_fetch_array()函数的参数是您的SQL语句 string 。这是你的警告所说的。你应该先使用 $ res = mysql_query($ sql); 并将$ res作为参数传递给mysql_fetch_array()
答案 1 :(得分:1)
mysql_fetch_Array的输入是一个资源,它也是mysql_query的返回值。如果将值$ sql传递给mysql_query(),它将不会修改参数,因为它是按值传递的。您必须将返回值分配给另一个变量,该变量将是所需的资源。
$result = mysql_query($sql);
然后,将result参数传递给mysql_fetch_array:
$row = mysql_fetch_array($result, MYSQL_BOTH)
另一个重要注意事项:正如您在所有相关主题中看到的那样,请阅读php.net中的红色框以了解这些功能。
不鼓励使用此扩展程序。相反,MySQLi或PDO_MySQL 应该使用扩展名。另请参见MySQL:选择API指南和 相关FAQ以获取更多信息。替代此功能 包括:
mysqli_query()PDO :: query()
答案 2 :(得分:0)
更改:mysql_query($ sql);
收件人:$sql = mysql_query($sql);
答案 3 :(得分:0)
引自PHP.net关于mysql_query()
:
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回 resultset,mysql_query()在成功时返回资源,或者返回FALSE 错误。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等, mysql_query()成功时返回TRUE,错误时返回FALSE。
在您的情况下,资源会被退回,但您忘记将其分配给任何内容。
将mysql_query($sql)
更改为$resource = mysql_query($sql)
。