首页 > PHP > Laravel教程 直接使用sql操作数据库

Laravel教程 直接使用sql操作数据库

2025-03-12 14:43:02

1. 引入必要的命名空间

在使用数据库相关功能之前,需要确保引入了 DB 门面。通常在控制器顶部添加如下代码:

use Illuminate\Support\Facades\DB;

2. 执行查询语句(SELECT

使用 DB::select 方法来执行 SELECT 查询,该方法会返回一个包含查询结果的数组。

// 简单的 SELECT 查询
$users = DB::select('SELECT * FROM users');
foreach ($users as $user) {
    echo $user->name;
}

// 带参数的 SELECT 查询
$id = 1;
$user = DB::select('SELECT * FROM users WHERE id = ?', [$id]);
if ($user) {
    echo $user[0]->name;
}
 

在上述示例中,第一个查询会返回 users 表中的所有记录,第二个查询使用了占位符 ? 来防止 SQL 注入,将参数 $id 作为数组传递给 DB::select 方法。

3. 执行插入语句(INSERT

使用 DB::insert 方法来执行 INSERT 查询,该方法会返回一个布尔值,表示插入操作是否成功。

// 插入单条记录
$affected = DB::insert('INSERT INTO users (name, email) VALUES (?, ?)', ['John Doe', 'johndoe@example.com']);
if ($affected) {
    echo 'Record inserted successfully.';
}

// 插入多条记录
$data = [
    ['name' => 'Jane Smith', 'email' => 'janesmith@example.com'],
    ['name' => 'Bob Johnson', 'email' => 'bobjohnson@example.com']
];
foreach ($data as $record) {
    DB::insert('INSERT INTO users (name, email) VALUES (?, ?)', [$record['name'], $record['email']]);
}

4. 执行更新语句(UPDATE

使用 DB::update 方法来执行 UPDATE 查询,该方法会返回受影响的行数。

// 更新记录
$id = 1;
$affected = DB::update('UPDATE users SET name = ? WHERE id = ?', ['Updated Name', $id]);
if ($affected > 0) {
    echo 'Record updated successfully.';
}

5. 执行删除语句(DELETE

使用 DB::delete 方法来执行 DELETE 查询,该方法会返回受影响的行数。

// 删除记录
$id = 1;
$affected = DB::delete('DELETE FROM users WHERE id = ?', [$id]);
if ($affected > 0) {
    echo 'Record deleted successfully.';
}

6. 执行非查询语句(如 CREATE TABLEALTER TABLE 等)

使用 DB::statement 方法来执行非查询语句,该方法通常用于执行不返回结果集的 SQL 语句。

// 创建表
DB::statement('CREATE TABLE IF NOT EXISTS new_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255))');

// 修改表结构
DB::statement('ALTER TABLE users ADD COLUMN phone VARCHAR(20)');

注意事项

  • 使用占位符 ? 来防止 SQL 注入攻击,避免直接将用户输入的数据拼接到 SQL 语句中。
  • 在执行复杂的 SQL 操作时,建议使用事务来确保数据的一致性。可以使用 DB::beginTransaction()DB::commit() 和 DB::rollBack() 方法来管理事务。例如:
DB::beginTransaction();
try {
    DB::insert('INSERT INTO users (name, email) VALUES (?, ?)', ['John Doe', 'johndoe@example.com']);
    DB::update('UPDATE users SET name = ? WHERE id = ?', ['Updated Name', 1]);
    DB::commit();
    echo 'Transaction committed successfully.';
} catch (\Exception $e) {
    DB::rollBack();
    echo 'Transaction rolled back: '. $e->getMessage();
}

以上就是 Laravel 中直接执行 SQL 的常用示例。

使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top