Php 如何将动态参数传递给查询?

Php 如何将动态参数传递给查询?,php,mysql,sql,dynamic,Php,Mysql,Sql,Dynamic,这是我的密码: $param2 = $val2 = ""; if ($myCondition){ $parm2 = ", param2 = ?"; $val2 = "something"; } $stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? $param2 WHERE param3 = ?"); $stmt->execute([$val1, $val2, $val3]); 我的代码在该条件为tru

这是我的密码:

$param2 = $val2 = "";
if ($myCondition){
    $parm2 = ", param2 = ?";
    $val2 = "something";
}

$stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? $param2 WHERE param3 = ?");
$stmt->execute([$val1, $val2, $val3]);

我的代码在该条件为
true
时工作。如果这是
错误
,我如何处理它?

这里有一个开始的代码:

$params = ['param1 = ?'];
$values = [$param1];
if ($myCondition){
    $params[] = 'param2 = ?'
    $values = [$param2];
}
$values[] = $param3;

$stmt = $dbh_conn->prepare("UPDATE myTable SET " . implode(', ', $params)  . " WHERE param3 = ?");
$stmt->execute($values);

您可以根据需要对其进行修改,但主要思想是收集将在数组中更新的所有值,然后将此数组内爆为字符串。

以下是开始代码:

$params = ['param1 = ?'];
$values = [$param1];
if ($myCondition){
    $params[] = 'param2 = ?'
    $values = [$param2];
}
$values[] = $param3;

$stmt = $dbh_conn->prepare("UPDATE myTable SET " . implode(', ', $params)  . " WHERE param3 = ?");
$stmt->execute($values);
您可以根据需要对其进行修改,但主要思想是收集将在数组中更新的所有值,然后将此数组内爆为字符串。

更简单的方法是:

if ($myCondition){
$stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ?, param2 = ? WHERE param3 = ?");
$stmt->execute([$val1, "something", $val3]);
} else {
    $stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? WHERE param3 = ?");
$stmt->execute([$val1, $val3]);
}
更简单的方法是:

if ($myCondition){
$stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ?, param2 = ? WHERE param3 = ?");
$stmt->execute([$val1, "something", $val3]);
} else {
    $stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? WHERE param3 = ?");
$stmt->execute([$val1, $val3]);
}

构建一个
$array
,在相同条件下传递给
execute
。因此,如果if没有发生,那么数组就缺少一个值。@难以置信在问这个问题之前我就知道,你的解决方案很无聊,因为实际上有12个参数
:-(
。我正在寻找一种干净的方法。但显然没有更好的方法。无论如何,谢谢你。我想我必须接受你的想法……无聊?干净?呵呵……我相信你能想出一些办法……把你的“开箱即用”放在一边就行了好了!但是u_mulder拥有的,和大多数人使用它做的差不多。三元运算符?@FunkFortyNiner我不明白你的意思…在相同的条件下建立一个
$array
你传递给
execute
的数组。因此,如果if没有发生,那么数组就缺少一个值。@难以置信,在问这个问题之前我就知道,你的解决方案on很无聊,因为实际上有12个参数-()。我正在寻找一个干净的方法。但显然没有更好的方法。无论如何,谢谢你。我想我不得不接受你的想法。无聊?干净?呵呵…我相信你能想出一些东西…把你的“开箱即用”放在外面别紧张!但你穆德的东西,和大多数人用它做的差不多。三元运算符?@FunkFortyNiner我不明白你的意思……这很有用,伙计。这很有用,伙计