动态设置PDO的PARAM类型

时间:2016-09-08 11:20:29

标签: php mysql pdo

我有一个循环,它为绑定参数中设置的所有参数分配值。我的问题是,当我绑定它们时,我不太确定如何动态设置param类型。

例如,这是循环:

with xml as ( select '<?xml version="1.0" encoding="WINDOWS-1252"?>
<View>
    <ReportValues>
        <SalaryValue variable="HR" value="999"/>
        <SalaryValue variable="floor" value="20"/>
    </ReportValues>
</View>' xml from dual) 

select updatexml( xmltype.createxml(xml.xml),'/View/ReportValues/SalaryValue[@variable="HR"]/@value','666'  )
  from xml

但是 - 如果$ vals包含数组中某个值的字符串,则会中断(显然)。

如何根据$ vals中的值类型动态设置PARAM_INT?

我考虑过使用gettype(),但这似乎很混乱......:)

1 个答案:

答案 0 :(得分:1)

根本不打扰绑定 - 只需将所有内容发送到执行中:

$pdo->prepare($sql)->execute(array_combine($cols,$vals));

不要忘记关闭仿真模式,否则此方法会阻塞LIMIT子句参数。

但是,请记住,您尝试实施的此类动态查询是prone to SQL injection并应用适当的保护。