当前位置: 首页 > news >正文

laravel学习并连接mysql数据库

  1. 下载laravel
    laravel下载地址
  2. phpstudy_pro\WWW\laravel.env文件
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=clgl  //你的数据库名称
DB_USERNAME=root  //你的账号
DB_PASSWORD=root  //你的密码
  1. 修改phpstudy_pro\WWW\laravel\config\cors.php文件,允许前端访问
<?phpreturn ['paths' => ['api/*', 'sanctum/csrf-cookie'],'allowed_methods' => ['*'],'allowed_origins' => ['http://localhost:5173', 'http://127.0.0.1:5173'], // Vue 的地址'allowed_origins_patterns' => [],'allowed_headers' => ['*'],'exposed_headers' => [],'max_age' => 0,'supports_credentials' => true, // 如果需要携带 cookie
];
  1. 修改phpstudy_pro\WWW\laravel\app\Http\Kernel.php文件
protected $middlewareGroups = ['web' => [\App\Http\Middleware\EncryptCookies::class,\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,\Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class,\App\Http\Middleware\VerifyCsrfToken::class,\Illuminate\Routing\Middleware\SubstituteBindings::class,],'api' => [// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,'throttle:api',\Illuminate\Routing\Middleware\SubstituteBindings::class,\Fruitcake\Cors\HandleCors::class, //确保中间件已启用 确保这一行存在],];
  1. 在数据表中增加一个表
    在这里插入图片描述
  2. 写两个方法getQuestion和updateUsername,一个属于get请求一个属于post请求
<?php
namespace App\Http\Controllers;use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;class QuestionController extends Controller
{public function getQuestion(Request $request){// 1. 只允许 POST 请求if ($request->method() !== 'GET') {return response()->json(['status' => '405','status_message' => 'Method Not Allowed','content' => []], 405);}// 2. 获取 POST 参数$username = $request->input('username');// 3. 验证参数是否为空if (empty($username)) {return response()->json(['status' => '400','status_message' => 'Username is required','content' => []], 400);}// 4. 建立数据库连接// DB::select("SELECT * FROM question WHERE username = '$username'");$conn = mysqli_connect("127.0.0.1", "root", "root", "clgl");if (!$conn) {return response()->json(['status' => '500','status_message' => 'Database connection failed','content' => []], 500);}// 5. 设置字符集mysqli_query($conn, "SET NAMES utf8");// 6. 转义输入(防止 SQL 注入)$username = mysqli_real_escape_string($conn, $username);$sql = "SELECT * FROM question WHERE username = '$username'";$result = mysqli_query($conn, $sql);if (!$result) {mysqli_close($conn);return response()->json(['status' => '500','status_message' => 'SQL Error: ' . mysqli_error($conn),'content' => []], 500);}$data = mysqli_fetch_assoc($result);// 7. 返回 JSON 响应(使用 return 而不是 echo)if (empty($data)) {return response()->json(['status' => '404','status_message' => 'NO DATA FOUND','content' => []], 404);} else {return response()->json(['status' => '200','status_message' => 'success','content' => $data], 200);}// 8. 关闭连接(实际在 return 后不会执行,但逻辑上应确保关闭)mysqli_close($conn);}/*** 修改 username 的 POST 方法*/public function updateUsername(Request $request){// 1. 只允许 POST 请求if ($request->method() !== 'POST') {return response()->json(['status' => '405','status_message' => 'Method Not Allowed','content' => []], 405);}// 2. 获取 POST 参数:old_username 和 new_username$oldUsername = $request->input('old_username');$newUsername = $request->input('new_username');// 3. 验证参数是否为空if (empty($oldUsername) || empty($newUsername)) {return response()->json(['status' => '400','status_message' => 'old_username 和 new_username 是必填参数','content' => []], 400);}// 4. 使用 Laravel DB 门面更新数据(推荐方式)try {$affected = DB::table('question')->where('username', $oldUsername)->update(['username' => $newUsername]);if ($affected === 0) {return response()->json(['status' => '404','status_message' => '未找到匹配的记录,更新失败','content' => []], 404);}return response()->json(['status' => '200','status_message' => '用户名更新成功','content' => ['old_username' => $oldUsername,'new_username' => $newUsername]], 200);} catch (\Exception $e) {return response()->json(['status' => '500','status_message' => '数据库错误: ' . $e->getMessage(),'content' => []], 500);}}
}
  1. 下载phpstudy,启动Apache和Mysql
    在这里插入图片描述
  2. 设置访问位置
    在这里插入图片描述
  3. 输入http://localhost即可访问到laravel界面,即为配置成功;随后在地址中输入http://localhost/getQuestion?username=小红 ;可以访问到本地数据库中的数据
    在这里插入图片描述

在这里插入图片描述
10. 启动本地的vue项目尝试连接一下,测试是否存在跨域,以及post接口是否可以访问
(未完待续)

http://www.dtcms.com/a/353391.html

相关文章:

  • Linux 软件编程(十二)网络编程:TCP 并发服务器构建与 IO 多路复用
  • redis---set详解
  • Tortoisegit配置ssh教程
  • Vue3 新特性 defineModel 全面解析:让 v-model 写法更优雅
  • 项目智能家居---OrangePi全志H616
  • GitHub 宕机自救指南:保障开发工作连续性
  • 蓝桥杯算法之基础知识(3)——Python的idle的快捷键设置(idle改键)
  • 信任,AI+或人机环境系统智能的纽带
  • 深入解析EDCA通道与参数配置:优化Wi-Fi服务质量的关键策略
  • 新手向:网络编程完全指南
  • Jetson 分区知识全解与 OTA 升级实战
  • Containerd 安装与配置指南
  • 如何验证二叉搜索树:两种高效方法详解
  • 光伏设计平台:按组件数量铺设光伏板,精准控制投资成本
  • 推荐系统王树森(四)特征交叉+行为序列
  • 智能体前沿-主动信息获取理论基础
  • 汇川SV660A 伺服EMC电源滤波的安装要求及使用方法
  • Swift 解法详解 LeetCode 364:嵌套列表加权和 II
  • 【ConcurrentHashMap】实现原理和HashMap、Redis哈希的区别
  • 【Linux网络】网络基础
  • 如何高效地学习:从“死记硬背”到“内化创新”
  • 第二章从事件驱动到信号
  • ESP32使用场景及大规模物联网IoT
  • 【高级机器学习】3. Convex Optimisation
  • 海康相机的 HB 模式功能详解
  • 深入解析 OpenGL 着色器:顶点着色器与片段着色器
  • 无人驾驶叉车的核心作用:技术赋能下如何重塑工业物流的运作逻辑
  • Chrome插件学习笔记(四)
  • 豆包分析linux top
  • 李飞飞谈 AI 世界模型:技术内涵与应用前景