-1

重複の可能性:
PHP SQL、クエリは1行のデータのみを返します

私の友人は私にコーディングをするように頼まれました。彼は、列「gameName」(VARCHAR)と「releaseDate」(日付)を持つMySQLデータベースを作成しました。現在の日付より前にリリースされた「gameName」からゲーム名を取得して表示する必要があります。

ここでは、MySQLのCURDATE()関数を使用して、すでにリリースされているゲームを除外しました。しかし、問題は、結果ごとにエコーラインを作成する必要があることです。それは悪いプログラミングであり、その背後にあるロジックは非常に悪いです。

<?php
$mysql_host="host_name";
$mysql_username="db_user";
$mysql_password="db_password";
$mysql_database="db_name";
$mysql_table="table_name";

mysql_connect("host_name", "db_user", "db_password") or die("YOLO");
mysql_select_db("db_name") or die("YOLO");

$sql = mysql_query("SELECT gameName FROM table_name WHERE CURDATE() > releaseDate");
$result = mysql_fetch_row($sql);

echo $result[0];
echo $result[1];
echo $result[2];
// and so on...?
?>

結果:1つのレコードのみが表示されました。

4

2 に答える 2

5

まず第一に、mysql_*関数は非推奨であり、もはや使用されるべきではありません。特にユーザー入力を扱う場合は、PDOライブラリを強くお勧めします。

に固執することを主張する場合mysql_*、コードは次のようになります。

$result = mysql_query("your query") or die(mysql_error());
while ($row = mysql_fetch_row($result)) {
    echo $row['gameName'] . '<br />';
}

私は上記のコメントに同意します。あまり関与する前に、マニュアルをよく読んでおくことをお勧めします。少しの追加知識があると、プログラマーとしての効率に大きな違いが生じる可能性があります(コードのセキュリティは言うまでもありません)。

于 2012-12-08T15:32:31.997 に答える
2

PDOの例、

   $config = array(
        'host'  => 'hostname',
        'db'    => 'db_name',
        'user'  => 'db_user',
        'pass'  => 'db_pass'
    );

    try{

        $PDO = new PDO(
            'mysql:host='.$config['host'].';dbname='.$config['db'],
            $config['user'],
            $config['pass']
        );

        $query = $PDO->query("
                    SELECT id FROM table_name WHERE CURDATE() > releaseDate"
            );
        $query->setFetchMode(PDO::FETCH_OBJ);
        while($game = $query->fetch()){
            echo $game->gameName;
        }   

    }catch(PDOException $e){
        echo $e->getMessage();
    }
    unset($PDO);
于 2012-12-08T16:22:29.797 に答える