PDO查询数据后如何获取字段数据
时间: 2024-02-26 09:51:35 浏览: 71
你可以使用PDO的fetch函数来获取查询结果中的字段数据。fetch函数可以按照不同的模式返回查询结果,比如返回一个关联数组、数字索引数组等。以下是一个示例代码,它执行了一个SELECT查询并使用fetch函数获取查询结果中的字段数据:
```
// 假设已经建立好了PDO连接,$pdo是PDO对象
$query = "SELECT id, name, age FROM users WHERE id = 1";
$stmt = $pdo->query($query);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// 现在$row变量包含了查询结果中id、name和age字段的值
$id = $row['id'];
$name = $row['name'];
$age = $row['age'];
```
在上面的示例中,fetch函数的第一个参数指定了返回结果的模式,这里使用了PDO::FETCH_ASSOC模式,它会返回一个关联数组,数组的键是字段名,值是字段的值。你还可以使用其他模式,比如PDO::FETCH_NUM模式返回一个数字索引数组,PDO::FETCH_OBJ模式返回一个对象等等。
相关问题
PDO在名为test的数据库中创建名为testTable的数据表且数据表至少包含三个字段,字段名字、类型和属性自定; 为该数据库插入三条记录,并查询该数据表的所有数据;修改其中的一条记录,并查询该数据表的所有数据; 删除其中的一条记录,并查询该数据表的所有数据;
以下是使用PDO在test数据库中创建名为testTable的数据表的示例代码:
```php
<?php
// 数据库连接参数
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'root';
$password = '';
try {
// 创建数据库连接
$dbh = new PDO($dsn, $username, $password);
// 设置PDO错误模式为异常
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 创建testTable数据表
$sql = "CREATE TABLE testTable (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
attribute VARCHAR(30) NOT NULL
)";
$dbh->exec($sql);
echo "testTable数据表创建成功!<br>";
// 向testTable中插入三条记录
$sql = "INSERT INTO testTable (name, type, attribute)
VALUES ('字段1', '类型1', '属性1'),
('字段2', '类型2', '属性2'),
('字段3', '类型3', '属性3')";
$dbh->exec($sql);
echo "数据插入成功!<br>";
// 查询testTable中的所有数据
$sql = "SELECT * FROM testTable";
$stmt = $dbh->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "查询结果如下:<br>";
foreach ($result as $row) {
echo "id: " . $row['id'] . ", name: " . $row['name'] . ", type: " . $row['type'] . ", attribute: " . $row['attribute'] . "<br>";
}
// 修改testTable中的一条记录
$sql = "UPDATE testTable SET attribute='修改后的属性' WHERE id=2";
$dbh->exec($sql);
echo "数据修改成功!<br>";
// 再次查询testTable中的所有数据
$sql = "SELECT * FROM testTable";
$stmt = $dbh->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "查询结果如下:<br>";
foreach ($result as $row) {
echo "id: " . $row['id'] . ", name: " . $row['name'] . ", type: " . $row['type'] . ", attribute: " . $row['attribute'] . "<br>";
}
// 删除testTable中的一条记录
$sql = "DELETE FROM testTable WHERE id=3";
$dbh->exec($sql);
echo "数据删除成功!<br>";
// 再次查询testTable中的所有数据
$sql = "SELECT * FROM testTable";
$stmt = $dbh->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "查询结果如下:<br>";
foreach ($result as $row) {
echo "id: " . $row['id'] . ", name: " . $row['name'] . ", type: " . $row['type'] . ", attribute: " . $row['attribute'] . "<br>";
}
} catch (PDOException $e) {
echo "数据库操作失败:" . $e->getMessage();
}
```
注意:在实际应用中,需要根据具体情况修改数据库连接参数。
用PDO连接MySQL数据库服务器; 创建一个名为test的数据库; 在该数据库内创建一个名为“testTable”的数据表,数据表至少包含三个字段,字段名字、类型和属性自定;为该数据库插入三条记录,并查询该数据表的所有数据; 修改其中的一条记录,并查询该数据表的所有数据; 删除其中的一条记录,并查询该数据表的所有数据;
以下是使用PDO连接MySQL数据库服务器的示例代码:
```php
// 创建数据库连接
$host = 'localhost';
$dbname = 'test';
$username = 'root';
$password = '';
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// 创建数据表
$sql = "CREATE TABLE testTable (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
age INT(3),
email VARCHAR(50)
)";
$pdo->exec($sql);
// 插入数据
$sql = "INSERT INTO testTable (name, age, email) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['张三', 20, 'zhangsan@example.com']);
$stmt->execute(['李四', 25, 'lisi@example.com']);
$stmt->execute(['王五', 30, 'wangwu@example.com']);
// 查询数据
$sql = "SELECT * FROM testTable";
$stmt = $pdo->query($sql);
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
echo "{$row['name']} ({$row['age']}) - {$row['email']}<br>";
}
// 修改数据
$sql = "UPDATE testTable SET age = ? WHERE name = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([22, '张三']);
// 查询数据
$sql = "SELECT * FROM testTable";
$stmt = $pdo->query($sql);
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
echo "{$row['name']} ({$row['age']}) - {$row['email']}<br>";
}
// 删除数据
$sql = "DELETE FROM testTable WHERE name = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute(['王五']);
// 查询数据
$sql = "SELECT * FROM testTable";
$stmt = $pdo->query($sql);
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
echo "{$row['name']} ({$row['age']}) - {$row['email']}<br>";
}
```
以上代码将创建一个名为`test`的数据库,并在该数据库内创建一个名为`testTable`的数据表,数据表包含三个字段`name`、`age`和`email`。然后向该数据表插入三条记录,查询所有数据并输出。接着修改其中一条记录,再次查询所有数据并输出。最后删除其中一条记录,再次查询所有数据并输出。
阅读全文