必须设为PDO::ERRMODE_EXCEPTION,否则prepare失败只返回false且无法定位错误原因。

PDO::ATTR_ERRMODE 必须设为 PDO::ERRMODE_EXCEPTION,否则 prepare 失败只返回 false,你连错在哪都不知道。
本地环境别自己配 Linux + Nginx + PHP-FPM
转行者最常卡在第一步:花三天折腾 /etc/php.ini、SELinux 权限、php-fpm.sock 连接被拒绝。这不是你不会,是环境配置和生产部署混在一起了。
- Windows 直接装
PHPStudy,勾选 PHP 8.1+ 和 MySQL 8.0,点“启动”就完事 - Mac 用
MAMP,避开 Homebrew 编译报错(configure: error: off_t undefined这类错误毫无教学意义) - 所有操作目标只有一个:
http://localhost能打开,phpinfo()能输出,mysql -u root能进命令行
$_POST 不等于 $request->input(),但新手必须先写原生
别一上来就跑 php artisan make:controller。Laravel 的 $request 对象封装了过滤、验证、重定向逻辑,掩盖了 Web 请求的真实流转。转行者需要亲手踩一遍坑:
- 表单
method="POST"提交后,var_dump($_POST)看原始数据长什么样 - 直接拼 SQL:
"SELECT * FROM users WHERE email = '" . $_POST['email'] . "'"—— 第二天就被扫库脚本打穿 - 立刻换成
PDO::prepare()+?占位符,这是防 SQL 注入的最低门槛 - 加一句
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION),不然execute()报错静默失败
Laravel 路由写不对,90% 是命名空间和反斜杠问题
执行 composer create-project laravel/laravel blog 后,访问 http://localhost/blog/public 显示 404,不是框架坏了,是路由没生效。
立即学习“PHP免费学习笔记(深入)”;
- 新版 Laravel 默认只加载
routes/web.php,不是app/Http/Controllers下的文件 - 控制器路径里的反斜杠必须是双反斜杠:
Route::get('user/{id}', 'App\Http\Controllers\UserController@read') - 单反杠
AppHttpControllersUserController在字符串里会被 PHP 当成转义序列,直接报Parse error - 想快速验证,先写闭包路由:
Route::get('test', function () { return 'OK'; });,能访问再说其他
ThinkPHP8 要求 PHP ≥ 8.0,且命名空间必须手写对
运行 composer create-project topthink/think tp8 后报 Class "thinkApp" not found,大概率是 PHP 版本或命名空间加载出错。
- 先确认
php -v输出的是 8.0 或更高,TP8 不兼容 7.x - 手动写一个测试类:
namespace appindex; class Test { public function run() { return 'done'; } },再用require加载它,验证命名空间是否真能工作 - 路由定义必须放在
route/app.php,不是route/route.php(后者新版已废弃) - 数据库操作别急着用
Db::name('user'),先跑通模型:建appmodelUser.php,继承hinkModel,再调用User::find(1)
真正卡住转行者的,从来不是语法多难,而是某个小地方没对齐:PHP 版本号、反斜杠数量、配置文件路径、异常模式开关。这些细节不试错一遍,文档上的字你都认识,但代码就是跑不通。



















