📅  最后修改于: 2023-12-03 15:17:49.003000             🧑  作者: Mango
在 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 注入。