过程式PHP中MySQL查询无法返回单个字段问题求解
问题根因
mysqli_query执行SELECT查询后返回的是mysqli_result结果集对象,并非你要的字段直接取值。你直接将该对象压入数组做JSON序列化,前端解析后自然会显示为[object Object]。
修复方案
你需要先从结果集对象中提取出实际的行数据,再取对应的signature字段值即可,修正后代码如下:
if ($signatureDAT) { mysqli_query($dragonden, "INSERT INTO Signatures(signature) VALUES('$signatureDAT')"); $sigID = mysqli_insert_id($dragonden); // RETRIEVE DATA FROM DB, TO VERIFY IT WAS SAVED PROPERLY $result = mysqli_query($dragonden, "SELECT signature FROM Signatures WHERE id = '$sigID'"); // 从结果集中提取单条关联数组数据 $sigRow = mysqli_fetch_assoc($result); $sigDAT = $sigRow['signature']; // SEND RESULTS BACK TO AJAX $data = array(); array_push($data, $signatureDAT, $sigDAT); print json_encode($data); }
额外优化建议
- 原代码直接拼接SQL参数存在SQL注入风险,后续建议改用mysqli预处理语句传参,规避注入问题
- 可以增加查询结果校验逻辑,比如判断
$result是否为false、$sigRow是否存在,避免查询失败或无匹配数据时出现PHP报错
内容的提问来源于stack exchange,提问作者bloodymurderlive
相关产品推荐
相关产品推荐

