mysql_fetch_array的问题

时间:2010-08-09 11:39:45

标签: mysql

  

可能重复:
  Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

嘿,我是mySQL的初学者,这是我写的代码,`

        <?php

        echo "Here is the table";
        $con = mysql_connect("localhost","root","mypassword");

        if(!$con)
            die('Error:'.mysql_error());


        // Create table
        mysql_select_db("my_db", $con);
        $sql = "CREATE TABLE persons
        (
            f_name varchar(15),
            l_ame varchar(15),
            age int
        )";


        mysql_query("INSERT INTO persons (f_name, l_name, age)
        VALUES ('Peter', 'Griffin', '35')");

        mysql_query("INSERT INTO persons (f_name, l_name, age)
        VALUES ('Glenn', 'Quagmire', '33')");

        $res = mysql_query("SELECT * FROM persons");
        while($row = mysql_fetch_array($res))
        {
            echo $row['f_name'] . " " . $row['l_name'];
            echo "<br />";
        }
    ?>`

我收到以下错误

  

这是表格   警告:mysql_fetch_array():提供的参数不是第40行/var/www/PhpProject1/index.php中的有效MySQL结果资源

为什么我会收到此错误,如何解决?

3 个答案:

答案 0 :(得分:4)

您尚未创建表“人员”,您只需要一个包含create语句的String。 “l_ame varchar(15)”附近也有一个拼写错误,它应该是“l_name varchar(15)”。所以你应该尝试以下代码:

$sql = "CREATE TABLE persons 
( 
f_name varchar(15), 
l_name varchar(15), 
age int 
)";     
$res = mysql_query($sql) or trigger_error(mysql_error().$sql); ;

答案 1 :(得分:2)

matschie的答案是正确的,但这不是唯一的错误。

您的列在create table语句中拼写错误:

l_ame varchar(15),

应该是:

l_name varchar(15),

要自己捕获这样的错误,您可以检查mysql_query的返回值以查看是否存在错误,如果是,则使用mysql_error显示错误。

如何执行此操作的示例显示在mysql_query的PHP手册中:

$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

答案 2 :(得分:2)

实际上并不是mysql_fetch_array错误。此错误消息表明此函数的参数错误 并且这个参数由mysql_query()函数返回 所以这意味着在mysql端的查询执行过程中出现了错误 ans mysql有很多错误信息,非常有用。

因此,您必须与某些错误消息取得联系,而不是猜测,这会告诉您哪里出错了。

要实现这一点,请始终以这种方式运行查询:

$sql = "SELECT * FROM persons";
$res = mysql_query($sql) or trigger_error(mysql_error().$sql);