关于W3School中PHP/AJAX示例重复声明数据库及AJAX失效的疑问
关于PHP/AJAX示例的两个问题解答
1. 为什么要两次指定数据库?
这其实是冗余甚至可能是示例里的失误,我给你掰扯清楚:
mysqli_connect('localhost','peter','abc123','my_db')里的第四个参数my_db,就是用来指定连接成功后默认使用的数据库,相当于提前帮你选好要操作的库。- 后面的
mysqli_select_db($con,"ajax_demo")是主动切换当前连接的数据库,意思是把当前操作的库从my_db改成ajax_demo。
如果你的需求不是在同一个连接里切换数据库,这行mysqli_select_db完全可以删掉;如果示例的本意是操作my_db里的ajax_demo表,那这行代码就是写错了——表名应该写在SQL查询语句里(比如SELECT * FROM ajax_demo),而不是用mysqli_select_db来指定。
2. 复制代码后无法实现AJAX效果?
大概率是环境或配置的问题,你可以按下面的步骤排查:
- 先检查数据库连接参数:
示例里的用户名peter、密码abc123是W3Schools的演示账号,你本地的MySQL肯定不是这个配置!改成你自己的(比如默认用户名root,密码是你安装时设的,或者为空),数据库名也要和你本地创建的一致。 - 确认服务器和数据库结构正常:
- 确保你的本地服务器(XAMPP/WAMP之类的)已经启动,PHP和MySQL服务都在运行。
- 要提前创建好对应的数据库(比如
my_db)和里面的表(比如示例里的ajax_demo表,字段要和示例的SQL查询匹配)。
- 排查前端AJAX代码:
- 打开浏览器开发者工具(F12),切换到「Network」标签,触发AJAX操作(比如选下拉框),看看请求有没有发出去,返回的状态码是多少:404表示找不到PHP文件,500表示PHP代码有错误。
- 看「Console」标签有没有JS报错,比如路径写错、事件没绑定上。
- 排查PHP代码错误:
在PHP文件最开头加上这两行,让错误直接显示出来:
这样就能看到具体的问题,比如连接失败、SQL语法错误之类的。error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者user13505646
相关产品推荐
相关产品推荐

