PHP学得快的关键在于30分钟内看到localhost输出“Hello PHP!”;需解决端口冲突、开启错误报告、验证表单提交、捕获mysqli连接错误、函数必须显式return、参数默认值顺序合法。

echo 能跑起来,比看懂一百页手册都管用——PHP 学得快不快,取决于你第一次看到 localhost 输出 “Hello PHP!” 是不是在 30 分钟内。
用 XAMPP 启动 Apache 前先关 Skype 和 IIS
这不是玄学,是端口冲突的硬伤。XAMPP 默认用 80 端口,而 Skype、IIS、甚至某些杀毒软件会悄悄占着它,导致 Apache 启动失败但不报错,只显示“Starting…”,卡住不动。
- 打开 XAMPP 控制面板,点
Config → Service and Port Settings,把 Apache 的端口改成8080(临时方案) - 更彻底的做法:任务管理器 → “详细信息” → 查找
skype.exe或inetinfo.exe→ 结束进程 - 验证是否真通:浏览器访问
http://localhost:8080,看到 XAMPP 欢迎页才算环境就绪
别写 print_r($_POST) 就算完事
表单提交后一片空白?常见原因是没开错误报告,或者 $_POST 根本没收到数据,但你直接对空数组调用了 print_r,结果啥也不输出——连调试线索都断了。
- 在文件开头加这三行,强制暴露问题:
ini_set('display_errors', 1); error_reporting(E_ALL); - 检查表单
method是POST,且action指向当前 PHP 文件(比如action="index.php") - 用
var_dump($_SERVER['REQUEST_METHOD'])确认请求确实是 POST,而不是被浏览器缓存成 GET - 提交后页面跳转或 404?说明表单
action路径错了,不是语法问题,是 HTTP 路由问题
mysqli_connect() 失败时别只写 die("error")
数据库连不上,只输出 “error” 等于蒙眼修车。真实错误往往藏在连接参数、用户权限或 MySQL 服务状态里。
立即学习“PHP免费学习笔记(深入)”;
- 必须用
mysqli_connect_error()获取具体提示:$conn = mysqli_connect("localhost", "root", "", "test_db"); if (!$conn) { die("连接失败:" . mysqli_connect_error()); } - 常见真实错误包括:
Access denied for user 'root'@'localhost'(密码错)、Connection refused(MySQL 没启动)、Unknown database 'test_db'(库名拼错) - phpMyAdmin 能登录 ≠ PHP 能连:phpMyAdmin 可能用了不同用户(如
pma),而你的代码仍用默认root,但新版本 MySQL 8+ 默认禁用root远程登录
函数里漏写 return 不报错,但后续逻辑全崩
PHP 不强制返回值,function get_user($id) { $row = []; /* 忘了 return $row; */ } 看似无害,调用方拿到的是 null,一做 foreach($user as ...) 就直接报 Warning,还找不到源头。
- 所有有明确输出意图的函数,第一行就写
return null;占位,再逐步填充逻辑,避免遗漏 - 用
gettype()验证返回值:var_dump(gettype(get_user(1)));—— 别靠echo猜,echo null是空字符串,毫无提示 - 参数带默认值时,顺序不能乱:
function log($msg, $level = 'info', $time = null)合法;但function log($msg = '', $level, $time = null)会报 Parse error
真正卡住初学者的,从来不是语法有多难,而是错误没暴露、路径没打通、返回值被忽略——这些地方不手动打桩验证,光看教程永远在“以为会了”的幻觉里。



















