使用变量无法从MySQL uk_towns表查询数据,寻求技术协助
解决MySQL查询变量无结果的问题
兄弟,太懂你这种眼看逻辑没问题但查不出结果的憋屈了!我帮你捋捋可能的问题点,一个个排查:
- 预处理语句漏了关键步骤:你当前的代码里,初始化
$stmt = mysqli_stmt_init($conn);之后直接绑定参数执行,少了准备SQL语句的核心步骤!预处理必须先把SQL模板传入prepare,才能绑定参数执行。修正后的代码应该是这样:
$county = $userDetails['county']; $town = $userDetails['town']; $sql = "SELECT * FROM uk_towns WHERE county=? AND name=?"; $stmt = mysqli_stmt_init($conn); // 新增这步:先准备SQL语句模板 if (!mysqli_stmt_prepare($stmt, $sql)) { die("SQL准备失败: " . mysqli_error($conn)); } mysqli_stmt_bind_param($stmt, "ss", $county, $town); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); while ($row = mysqli_fetch_assoc($result)) { echo $row['id']; }
这应该是你当前最直接的问题,先补上这步试试。
- 变量可能带隐形空格:有时候从数组里取的值(比如用户输入或数据库读取的)会带有前后空格,看起来是
Dyfed,实际是Dyfed或Dyfed,和数据库里的纯值匹配不上。可以给变量加个去空格处理:
$county = trim($userDetails['county']); $town = trim($userDetails['town']);
- 字符编码不匹配:如果数据库表的字符集和PHP连接时的字符集不一致,也会出现「看起来内容一样但实际不匹配」的情况。可以在连接数据库后加上字符集设置:
mysqli_set_charset($conn, 'utf8mb4');
同时检查你的uk_towns表county字段的字符集是否和PHP设置的一致。
内容的提问来源于stack exchange,提问作者Origination
相关产品推荐
相关产品推荐

