我错过什么了吗?在PHP中读取数据库似乎很冗长


Am I missing something? Reading from database in PHP seems long-winded

因此,如果我想从数据库(PHP, MySql)中提取一些数据,无论我是为类编写还是硬编码,我一直在做以下事情:

$x = "SELECT <column(s)> FROM <table> WHERE <conditions>";
$y = mysql_query($x);
while($result = mysql_fetch_assoc($y))
{
echo $result['column']; // etc
}

显然我使用一个函数或类(取决于设计模式),所以像这样拉数据是在一行中完成的,我只是想知道我是否在做"太多的工作",如果有一个更快的方法来做到这一点。

谢谢。

您可以通过使用最新的PHP模块来访问数据库,从而获得更紧凑的代码。

您正在使用的mysql_xxx()函数已被mysqli_xxx()函数所取代。它使用了类似的代码,但提供了比旧库更多的特性和安全性:

$query = 'SELECT <column(s)> FROM <table> WHERE <conditions>';
if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
        print $row['column'];
    }
}

你可以在这里找到更多关于MySQLi(包括它与旧MySQL库的不同之处):http://php.net/manual/en/book.mysqli.php

但是对于真正简洁的代码,您可以考虑查看PDO库。您的查询可以用PDO表示,如下所示:

$sql = 'SELECT <column(s)> FROM <table> WHERE <conditions>';
foreach ($conn->query($sql) as $row) {
    print $row['column'];
}

…如果你真的想,前两行代码也可以合并。

在PHP手册站点找到更多关于PDO的信息:http://www.php.net/manual/en/book.pdo.php

看起来不错。你可以将前两行合并为"$y = mysql_query('SELECT FROM WHERE ');"

请注意,在PHP中使用单引号(')比使用双引号(")更快(从编译时间来看)。

这取决于进一步的工作,但您可能想要考虑将信息加载为XML dom格式。(如果你想做更复杂的事情,只是表示数据)