mysqli查询后如何将结果拆分到变量?附相关代码片段
如何将mysqli查询结果拆分到单独变量中
嘿,我看你现在想把mysqli查询出来的sifra字段值拆分到单独的变量里对吧?先说说你当前代码里的小问题:你在循环里每次都把单个sifra拼上逗号再拆分,这样最后只能得到最后一条记录的sifra(还带个空元素),完全没把所有查询结果都存下来。其实更高效的做法是先把所有结果收集到数组里,再按需分配到变量。
步骤1:收集所有查询结果到数组
先把查询到的所有sifra值存到一个数组里,这样后续操作会更灵活:
if($broj_podstanica != "" && $broj_podstanice != 0) { $uzmi_podstanice = "SELECT sifra FROM objekt WHERE vrsta_objekta = '2' ORDER BY sifra ASC LIMIT $broj_podstanice"; $pronasao_sve_podstanice = $db->query($uzmi_podstanice); // 初始化空数组存储所有sifra $sifre_array = []; while($red = $pronasao_sve_podstanice->fetch_assoc()) { // 把每个sifra添加到数组 $sifre_array[] = $red['sifra']; } }
步骤2:将数组元素分配到单独变量
现在你可以把数组里的元素赋值给对应的变量,比如$pods0、$pods1等,还可以处理数组长度不足的情况:
// 用null合并运算符给变量设置默认值,避免未定义报错 $pods0 = $sifre_array[0] ?? ""; $pods1 = $sifre_array[1] ?? ""; $pods2 = $sifre_array[2] ?? ""; // 你可以根据实际需要继续定义更多变量 // 或者用list语法(适合确定数量的场景) // 加一个默认值数组补全,避免元素不足时变量为null list($pods0, $pods1, $pods2) = $sifre_array + ["", "", ""];
关键安全提醒:避免SQL注入
你当前的代码直接把$broj_podstanice拼到SQL语句里,这存在严重的SQL注入风险!一定要用预处理语句来处理,这是mysqli操作的最佳实践:
if($broj_podstanica != "" && $broj_podstanice != 0) { // 使用预处理语句,用占位符?代替变量 $uzmi_podstanice = "SELECT sifra FROM objekt WHERE vrsta_objekta = '2' ORDER BY sifra ASC LIMIT ?"; $stmt = $db->prepare($uzmi_podstanice); // 绑定参数,i表示整数类型($broj_podstanice是数量,应为整数) $stmt->bind_param("i", $broj_podstanice); $stmt->execute(); // 获取结果集 $result = $stmt->get_result(); $sifre_array = []; while($red = $result->fetch_assoc()) { $sifre_array[] = $red['sifra']; } $stmt->close(); }
这样既保证了代码的安全性,又能正确收集所有查询结果,再轻松分配到单独变量里~
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

