tags:

views:

274

answers:

4

Hello,

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?

A: 

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

Check that before running fetch_array.

mabwi
If no results are found, it still returns a resource, but there are no results in it. `mysql_query()` only returns false if there is an error.
Lucas Oman
+1  A: 

$query = "SELECT * FROM Auctions";

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

so you'll see the error

andy.gurin
+2  A: 

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

Aron Rotteveel
mysql_query only returns false on an actual error. An empty result set is not an error.
KernelM
KernelM is correct.
Lucas Oman
+10  A: 

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);
?>
Greg