代码之家  ›  专栏  ›  技术社区  ›  painotpi

mysql\u fetch\u array[duplicate]有问题

  •  1
  • painotpi  · 技术社区  · 14 年前

    可能重复:
    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

            <?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\u fetch\u array():第40行的/var/www/PhpProject1/index.php中提供的参数不是有效的mysql结果资源

    3 回复  |  直到 7 年前
        1
  •  2
  •   Your Common Sense Juan Carlos Alvez Balbastro    14 年前

    这实际上不是mysql\u fetch\u数组错误。此错误消息表示此函数的参数错误。

    所以这意味着在mysql端执行查询时出现了一个错误。

    因此 猜测 ,你必须和 某些错误消息 那会告诉你出了什么问题。

    为此,请始终按以下方式运行查询:

    $sql = "SELECT * FROM persons";
    $res = mysql_query($sql) or trigger_error(mysql_error().$sql);
    
        2
  •  4
  •   Matschie    14 年前

    $sql = "CREATE TABLE persons 
    ( 
    f_name varchar(15), 
    l_name varchar(15), 
    age int 
    )";     
    $res = mysql_query($sql) or trigger_error(mysql_error().$sql); ;
    
        3
  •  2
  •   Mark Byers    14 年前

    马奇的回答是正确的,但这不是唯一的错误。

    create table语句中列的拼写也不正确:

    l_ame varchar(15),
    

    应该是:

    l_name varchar(15),
    

    要自己捕获这样的错误,可以检查 mysql_query mysql_error .

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