You need to enable JavaScript to run this app. 如何让PHP变量$address获取地址、城市、州、邮编四个完整字段
优惠活动
大模型
产品
解决方案
定价
更多

如何让PHP变量$address获取地址、城市、州、邮编四个完整字段

问题原因
  • 你使用的getById方法仅支持单条件查询,仅接收3个入参:表名、条件字段名、条件匹配值,本身不支持传入多个参数做多字段匹配
  • 该方法已经使用select *查询全表字段,只要查询命中对应记录,返回的$address对象默认包含address/city/state/PostalCode全部字段,无需额外传参获取
场景1:$task->address为locations表的主键ID

无需修改查询逻辑,直接调用对应字段输出即可,修改前端展示代码:

<div class="col-xs-6">
    <p>Address (New Format):</p>
</div>
<div class="col-xs-6">
    <?php 
        $address =$this->commonModel->getById('locations','id',$task->address); 
    ?>
  <p>
      <a href="javascript:;" data-type="select" data-pk="1" data-value="" data-original-title="Select Address" 
          class="editable editable-click contactaddress" style="color: gray;">
          <?php echo $address->name.' - '.$address->address.' '.$address->city.' '.$address->state.' '.$address->PostalCode; ?>&nbsp;
      </a>
  </p>
</div>
场景2:需要用$task自带的address/city等字段匹配locations记录

需要先在commonModel中新增支持多条件查询的方法:

public function getByConditions($table, $conditions){
    $whereClause = [];
    foreach($conditions as $field => $val){
        // 此处仅做示例,生产环境建议改为参数绑定避免SQL注入
        $whereClause[] = $field.' = "'.$val.'"';
    }
    $whereStr = implode(' AND ', $whereClause);
    $qry =$this->db->query('select * from '.$table.' where '.$whereStr.' limit 1');
    return $qry->row();
}

调用时传入所有需要匹配的条件即可:

$address = $this->commonModel->getByConditions('locations', [
    'address' => $task->address,
    'city' => $task->city,
    'state' => $task->state,
    'PostalCode' => $task->PostalCode
]);

注意:现有getById方法直接拼接SQL参数存在SQL注入风险,生产环境建议替换为参数绑定的预处理查询逻辑。

内容的提问来源于stack exchange,提问作者Joel Perez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 02:15:04