-1

可能重复:
PHP SQL,查询只返回一行数据

我的一个朋友被要求做一些编码。他创建了一个 MySQL 数据库,其中包含“gameName”(VARCHAR)和“releaseDate”(日期)列。他需要从当前日期之前发布的“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...?
?>

结果:只显示了一条记录。

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 回答