PHP入门需掌握$_POST取参、mysqli查库、echo输出HTML;熟练变量类型差异、数组操作、字符串处理;理解请求生命周期、会用预处理防SQL注入;开启错误报告调试。
PHP 要会什么?不是学完所有语法才算入门,而是能用 $_POST 接参、用 mysqli 查数据库、把 echo 出来的 HTML 渲染到浏览器——这就已经跨过“不会”的门槛了。
PHP 的变量不用声明类型,但得清楚什么时候是 null、什么时候是空字符串 ''、什么时候是 false,三者在 if 判断里

foreach 遍历、array_merge 合并、in_array 查找必须手熟。字符串处理别总依赖 str_replace,注意 trim 默认只去首尾空白,htmlspecialchars 要在输出前调用防 XSS。
$_GET 和 $_POST 是超全局变量,不是函数,不能加括号调用$arr['name']),数字索引可不带($arr[0]),但统一用引号更安全.,不是加号 +;加号会尝试转成数字相加,容易出错PHP 是请求响应模型:一次 HTTP 请求 → 启动 PHP 解释器 → 执行脚本 → 输出内容 → 进程结束。这意味着没有“常驻内存”的变量(除非用 static 或外部存储),session_start() 必须在任何输出之前调用,否则报 Cannot send session cache limiter 错误。
$_GET/$_POST,参数走 $argv
php.ini 加载路径可能不同,用 phpinfo() 确认实际生效配置include 和 require 区别在于失败时是否中止脚本;_once 版本防止重复加载同一文件别碰 mysql_* 函数(已废弃),直接上 mysqli 或 PDO。重点不是学*有方法,而是建立“参数不能拼进 SQL 字符串”的条件反射。用预处理语句(prepare + bind_param)是底线,哪怕只是本地小项目。
mysqli_query($conn, "SELECT * FROM user WHERE id = $_GET[id]") —— 这种写法等于给黑客递刀mysqli_real_escape_string 不是万能解药,它只对字符串有效,且无法防御所有上下文(比如 ORDER BY 后的字段名)mysqli_fetch_assoc() 或 fetch()(PDO)取出行,不是直接 echo 结果资源开发时务必打开错误报告:error_reporting(E_ALL); ini_set('display_errors', '1');。生产环境关掉 display_errors,但要确保 log_errors 开启,并检查 error_log 路径权限。遇到白屏,第一反应不是代码写错了,而是看 PHP 是否报了致命错误(比如调用未定义函数),这类错误默认不显示,需主动配置。
Notice 类错误(如访问未定义数组键)默认不中断执行,但可能掩盖逻辑问题,建议开发阶段全开var_dump() 比 echo 有用得多,尤其看数组/对象结构;配合 die() 可快速打断流程定位问题位置真正卡住人的往往不是“没学过”,而是某个 session_start() 前有空格、某个 require 路径少了个 ../、或者 PDO 连接时把 localhost 写成 127.0.0.1 导致权限不一致——这些细节比语法本身更消耗时间。