-3

データベースからデータを取得しようとしていますが、このエラーが発生しています。mysql で完全に実行されるため、クエリにエラーはありません。

なぜこのエラーが発生するのですか?

[client 127.0.0.1] PHP Warning:  mysql_query() expects parameter 2 to be resource, boolean given in /var/www/imdb.php on line 35

[client 127.0.0.1] PHP Warning:  mysql_error() expects parameter 1 to be resource, boolean given in /var/www/imdb.php on line 35  

phpコード:

    function getdirector($director)
    {
    global $db;
    $query = 'select name from peopledb where peopleid = '.$director;
    $result = mysql_query($query,$db) or die(mysql_error($db));
    $row = mysql_fetch_assoc($result);
    extract($row);
    return $name;
    }

    function getactor($actor)
    {
    $query = 'select name from peopledb where peopleid = '.$actor;
    $result = mysql_query($query,$db) or die(mysql_error($db));
    $row = mysql_fetch_assoc($result);
    extract($row);
    return $name;
    }


    function getmovietype($type)
    {
    $query = 'select movietype from movietype where movieid = '.$type;
    $result = mysql_query($query,$db) or die(mysql_error($db));
    $row = mysql_fetch_assoc($result);
    extract($row);
    return $movietype;
    }

    $db = mysql_connect('localhost','root','saw123') or die("Connection error");
    $db = mysql_select_db("moviesite",$db) or die(myql_error($db));
    $query = 'select moviename,releaseyear,director,actor,type from movie';
    $result = mysql_query($query,$db) or die(mysql_error($db));

    $table = <<<ENDHTML
    <div style="text-align: center;" >
    <h2>The Ultimate movie database</h2>
    <table border='1' cellpadding='1' cellspacing='2'
           style="width: 70%; margin-left: auto; margin-right: auto;">

    <tr>
    <th>Movie title</th>
    <th>year of release </th>
    <th>Movie director</th>
    <th>Movie Actor</th>
    <th>Movie type</th>
    </tr>
    ENDHTML;

    while ($row = mysql_fetch_assoc($result))
    {
    extract($row);
    $director1 = getdirector($director);
    $actor1 = getactor($actor);
    $movietype1 = getmovietype($type);

    $table .= <<<ENDHTML
    <tr>
    <td>$moviename</td>
    <td>$releaseyear</td>
    <td>$director1</td>
    <td>$actor1</td>
    <td>$movietype1</td>
    </tr>
    ENDHTML;
    }
    $table .=<<<ENDHTML
    </table>
    </div>
    ENDHTML;

    echo $table;


    ?>

* UPDATE ::: mysql_error() 関数を使用している場所でエラーが表示されていました。すべての「$ db」パラメータを削除した後、機能します。どうして ?*

4

1 に答える 1

1

このように呼び出すだけです:

$result = mysql_query($query);

mysql_connect 関数を見ると、失敗すると false (ブール値) が返されます。

http://php.net/manual/en/function.mysql-connect.php

そのため、接続が確立されていない可能性があります。

編集: この関数を見てください: http://php.net/manual/en/function.mysql-select-db.php

あなたが呼んでいる:

$db = mysql_connect('localhost','root','saw123') or die("Connection error");
    $db = mysql_select_db("moviesite",$db) or die(myql_error($db));

2 行目は $db を true または false に設定します - mysql_select_db はブール値のみを返すためです。

編集2:おそらくあなたが意味したのは:

$db = mysql_connect('localhost','root','saw123') or die("Connection error");
mysql_select_db("moviesite",$db) or die(myql_error($db));

この場合、$db は適切な名前が付けられません。より正確には、$connection または $db_connection などと呼ばれます。

于 2012-10-28T11:15:06.167 に答える