ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 在 PostgreSQL 中使用 PHP 检索数据 > 原文: [http://zetcode.com/db/postgresqlphp/read/](http://zetcode.com/db/postgresqlphp/read/) 有几种函数可以从数据库读取数据。 数据可以作为枚举数组,对象或关联数组来获取。 从数据库检索数据需要执行三个步骤。 首先,我们定义一个 SQL `SELECT`语句。 该语句通过`pg_query()`函数执行。 (在准备语句的情况下,我们将使用`pg_execute()`函数。)我们收到一个结果集对象。 使用结果集,我们使用`pg_fetch_row()`,`pg_fetch_assoc()`或`pg_fetch_object()`函数获取数据。 ```php <?php $host = "localhost"; $user = "user12"; $pass = "34klq*"; $db = "testdb"; $con = pg_connect("host=$host dbname=$db user=$user password=$pass") or die ("Could not connect to server\n"); $query = "SELECT * FROM cars LIMIT 5"; $rs = pg_query($con, $query) or die("Cannot execute query: $query\n"); while ($row = pg_fetch_row($rs)) { echo "$row[0] $row[1] $row[2]\n"; } pg_close($con); ?> ``` 我们从`cars`表中获得 5 辆汽车,并将它们打印到控制台。 ```php $query = "SELECT * FROM cars LIMIT 5"; ``` 这是提取 5 行汽车的 SQL。 ```php $rs = pg_query($con, $query) or die("Cannot execute query: $query\n"); ``` 使用`pg_query()`函数执行查询。 该函数返回结果集。 ```php while ($row = pg_fetch_row($rs)) { echo "$row[0] $row[1] $row[2]\n"; } ``` `pg_fetch_row()`函数返回一个字符串值数组。 我们可以使用数组索引符号来获取数组字段。 当没有更多的行时,该函数返回`false`,而`while`循环终止。 ```php $ php retrieve1.php 1 Audi 52642 2 Mercedes 57127 3 Skoda 9000 4 Volvo 29000 5 Bentley 350000 ``` 示例输出。 在第二个示例中,我们将使用`pg_fetch_assoc()`函数获取数据。 ```php <?php $host = "localhost"; $user = "user12"; $pass = "34klq*"; $db = "testdb"; $con = pg_connect("host=$host dbname=$db user=$user password=$pass") or die ("Could not connect to server\n"); $query = "SELECT * FROM cars LIMIT 5"; $rs = pg_query($con, $query) or die("Cannot execute query: $query\n"); while ($row = pg_fetch_assoc($rs)) { echo $row['id'] . " " . $row['name'] . " " . $row['price']; echo "\n"; } pg_close($con); ?> ``` `pg_fetch_assoc()`函数获取一行作为关联数组。 关联数组的键是列名。 ```php while ($row = pg_fetch_assoc($rs)) { echo $row['id'] . " " . $row['name'] . " " . $row['price']; echo "\n"; } ``` `id`,`name`和`price`是返回的关联数组的键。 在最后一个示例中,我们将使用`pg_fetch_object()`函数获取数据。 它返回一个对象,该对象的属性与获取的行的字段名称相对应。 ```php <?php $host = "localhost"; $user = "user12"; $pass = "34klq*"; $db = "testdb"; $con = pg_connect("host=$host dbname=$db user=$user password=$pass") or die("Could not connect to server\n"); $query = "SELECT * FROM cars LIMIT 5"; $rs = pg_query($con, $query) or die("Cannot execute query: $query\n"); while ($ro = pg_fetch_object($rs)) { echo $ro->id . " "; echo $ro->name . " "; echo $ro->price . " "; echo "\n"; } pg_close($con); ?> ``` 我们从`cars`表中选择五辆车。 ```php while ($ro = pg_fetch_object($rs)) { echo $ro->id . " "; echo $ro->name . " "; echo $ro->price . " "; echo "\n"; } ``` 列名称是对象属性,其中包含值。 我们已经使用`pg_fetch_row()`,`pg_fetch_assoc()`和`pg_fetch_object()`函数完成了数据读取。