Android通过参数向PHP传递数据,无法获取目标表名的问题
问题排查与修复方案
1. PHP参数获取逻辑错误
你的PHP代码里存在未定义变量和参数引用错误:
原代码中$parms是未声明的变量,正确从$_REQUEST获取参数的方式应该是直接指定键名:
$name = $_REQUEST['enname'];
原写法$_REQUEST[$parms["enname"]]完全不符合PHP获取请求参数的逻辑,这是导致无法拿到表名的核心原因。
2. SQL语法错误
表名不能用单引号(')包裹,单引号用于定义字符串常量,表名需用反引号(`)包裹(兼容含特殊字符的表名)或直接省略:
// 表名无特殊字符时的写法 $query = "SELECT * FROM $name"; // 兼容特殊字符表名的写法 $query = "SELECT * FROM `$name`";
原代码里的'$name'会让数据库将表名识别为字符串,而非实际的表,导致查询失败。
3. 安全风险提示
直接使用前端传入的参数作为表名存在严重SQL注入风险,建议添加白名单校验,仅允许访问预先定义的合法表名:
// 替换为你实际允许访问的表名列表 $allowedTables = ['shohada_table1', 'shohada_table2']; if (!in_array($name, $allowedTables)) { exit("非法访问"); }
内容的提问来源于stack exchange,提问作者haji
相关产品推荐
相关产品推荐

