[英]How to pass dynamic parameter to the query?
Here is my code: 这是我的代码:
$param2 = $val2 = "";
if ($myCondition){
$parm2 = ", param2 = ?";
$val2 = "something";
}
$stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? $param2 WHERE param3 = ?");
$stmt->execute([$val1, $val2, $val3]);
My code works when that condition is true
. 当该条件
true
时,我的代码将起作用。 How can I handle that when that's false
? 如果那是
false
,我该如何处理?
$param2 = $val2 = "";
if ($myCondition){
$parm2 = ", param2 = ?";
$val2 = "something";
$stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? $param2 WHERE param3 = ?");
$stmt->execute([$val1, $val2, $val3]);
} else {
$stmt = $dbh_conn->prepare("UPDATE myTable SET param1 = ? WHERE param3 = ?");
$stmt->execute([$val1, $val3]);
}
Here's a code to start: 这是开始的代码:
$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);
You can modify it as you want, but the main idea is to gather all values that will be updated in array and then implode this array to a string. 您可以根据需要对其进行修改,但是主要思想是收集将在数组中更新的所有值,然后将此数组内嵌到字符串中。
The easier way is: 更简单的方法是:
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]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.