Joshxtothe4
Joshxtothe4

Reputation: 4193

mysql_fetch_array() returns 'supplied argument is not a valid MySQL result resource'

I am trying the following code:

<?php

    $link = mysql_connect('localhost', 'root', 'geheim');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';



    $query = "SELECT * FROM Auctions";
    $result = mysql_query($query);

    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        foreach($row as $field=>$value)
        {
            echo "$field: {$value} <br />";
        }
    }
    mysql_close($link);

?> 

And get this error:

Warning: mysql_fetch_array(): supplied argument is not a
    valid MySQL result resource in
    C:\Programme\EasyPHP 2.0b1\www\test.php on line 14

What am I missing?

Upvotes: 0

Views: 1074

Answers (4)

Greg
Greg

Reputation: 321698

You haven't selected a database - use mysql_select_db()

That would be something like:

<?php
    $link = mysql_connect('localhost', 'root', 'geheim');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';

    $db_selected = mysql_select_db('foo', $link);
    if (!$db_selected) {
        die ('Error selecting database: '. mysql_error());
    }
    echo 'Using database successfully';

    $query = "SELECT * FROM Auctions";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        foreach($row as $field=>$value) {
            echo "$field: {$value} <br />";
        }
    }
    mysql_close($link);
?> 

Upvotes: 9

Aron Rotteveel
Aron Rotteveel

Reputation: 83173

Your MySQL query possibly does not match any rows in the database.

Check the return value of mysql_query(), which returns "resource" on success and "false" on failure.

$query = "SELECT * FROM Auctions"; 
$result = mysql_query($query);

if ($result !== false) {
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
        foreach ($row as $field=>$value) { 
            echo $field . ':' . $value
        }
    }
} else {
    // query returned 0 rows
}

As others also suggested, you can use mysql_error() to look if the query returns any mySQL errors

Upvotes: 2

andy.gurin
andy.gurin

Reputation: 3914

$query = "SELECT * FROM Auctions";

$result = mysql_query($query) or die(mysql_error());

so you'll see the error

Upvotes: 1

MattBelanger
MattBelanger

Reputation: 5350

Are you getting anything returned? If no results are found, mysql_query returns FALSE.

Check that before running fetch_array.

Upvotes: 0

Related Questions