📜  mysqli_query 在 laravel 中插入 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:49.003000             🧑  作者: Mango

在 Laravel 中使用 mysqli_query 插入数据

在 Laravel 中,我们通常使用 Eloquent 或 Query Builder 来处理 SQL 查询和操作。但是,有时候我们需要通过 mysqli_query 函数直接执行 SQL 语句。本文将介绍如何在 Laravel 中使用 mysqli_query 函数插入数据。

准备工作

首先,我们需要确保已经安装并启用了 MySQL 扩展。可以通过以下命令检查:

php -m | grep mysqli

如果输出 mysqli,则表示扩展已经安装且启用。

接下来,在 .env 文件中配置数据库连接参数,例如:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_username
DB_PASSWORD=my_password
创建路由和控制器

我们需要创建一个路由和对应的控制器方法来处理插入数据的请求。可以使用以下命令快速创建控制器:

php artisan make:controller UserController --resource

然后在 routes/web.php 文件中添加以下路由:

Route::post('/users', 'UserController@store');

UserController 控制器中,我们可以创建 store 方法来处理插入数据的请求:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

public function store(Request $request)
{
    $name = $request->input('name');
    $email = $request->input('email');
    
    $result = DB::connection()->getPdo()->query("INSERT INTO users (name, email) VALUES ('$name', '$email')");
    
    if ($result) {
        return response()->json(['message' => 'User created successfully'], 201);
    } else {
        return response()->json(['message' => 'Failed to create user'], 400);
    }
}

在上述代码中,我们通过 DB::connection()->getPdo()->query 方法执行 SQL 语句插入数据。注意,这里的 SQL 语句是直接传递给 mysqli_query 函数的,因此需要非常小心地编写避免 SQL 注入攻击。

测试插入数据

现在,我们可以使用 Postman 或其他工具发送 POST 请求来测试插入数据的功能。请求体可以使用如下 JSON 数据:

{
    "name": "John Doe",
    "email": "john.doe@example.com"
}

如果插入数据成功,响应状态码应该是 201,响应体如下:

{
    "message": "User created successfully"
}

如果插入数据失败,响应状态码应该是 400,响应体如下:

{
    "message": "Failed to create user"
}
总结

在 Laravel 中使用 mysqli_query 函数插入数据可以方便地执行自定义的 SQL 语句。但是,由于没有经过 Eloquent 或 Query Builder 的验证,因此需要非常小心地编写 SQL 语句,避免 SQL 注入攻击。同时,推荐在代码中使用绑定参数的方式来避免 SQL 注入。