使用$_POST方法获取参数时提示Undefined variable $id问题求助
问题原因
- 参数名不匹配:AJAX请求传递的参数名为
code,PHP代码中读取的是$_POST["ID"],无法获取到对应值,导致$id从未被初始化,触发未定义变量报错 - 语法错误:PHP代码中
$_POST(["ID"]) != ''写法错误,$_POST是数组类型,访问元素需用方括号[],写圆括号会被识别为函数调用触发报错 - 安全隐患:PDO预处理方法使用不规范,直接拼接变量到SQL语句中,存在SQL注入风险
修复方案
方式1:保持PHP接收参数逻辑不变,修改AJAX传参
若下拉框的value属性存储的是商品ID,将AJAX请求的data字段修改为和PHP接收一致的参数名即可:
<script> $(document).ready(function(){ $('#itemname').change(function(){ var code = $(this).val(); $.ajax({ type: 'POST', url: 'pages/GetCode.php', // 修改参数名为ID,和PHP接收逻辑对齐 data:{ID:code}, success: function(data){ document.getElementById("itemcode").value = data; }, error: function (jqXHR, textStatus, errorThrown){ alert(errorThrown); } }); }); }); </script>
方式2:保持AJAX传参不变,修改PHP接收逻辑
若下拉框的value属性存储的是商品名称,直接修改PHP代码的接收参数和查询逻辑即可,同步修复语法问题、优化预处理使用方式:
<?php require 'DBConnection.php'; $code=''; // 提前初始化变量,避免特殊场景下的未定义报错 $id = ''; // 接收AJAX传递的code参数,合并判断逻辑简化代码 if(isset($_POST["code"]) && trim($_POST["code"]) != ''){ $query_val = $_POST['code']; // 使用参数绑定,避免SQL注入,把下方item_name替换为你表中存商品名称的字段名即可 $get_c = $pdo->prepare("SELECT * FROM all_menu WHERE `item_name` = ?"); $get_c->execute([$query_val]); while ($row = $get_c->fetch()) { $code .= $row['item_code']; } echo $code; }
内容的提问来源于stack exchange,提问作者Hazem El-behairy
相关产品推荐
相关产品推荐

