【发布时间】:2016-03-02 21:11:10
【问题描述】:
我确定这与使用变量填充字符串有关,但我不确定如何解决此问题。
我有一个通过变量填充的 sql 语句,该变量可能包含也可能不包含数据,这就是我必须这样做的原因。
例子
if ($data1 != '') {
$col1 = "col1 = '".$data1."', "
}
if ($data2 != '') {
$col2 = "col2 = '".$data2."', "
}
if ($data3 != '') {
$col3 = "col3 = '".$data3."', "
}
并非每个$data 都可能包含某些内容,因此某些变量将为空且不属于我的 SQL 语句,但假设所有三个变量都有数据。
$sql = "UPDATE table SET $col1$col2$col3 WHERE ID = '$ID'";
然后产生
$sql = "UPDATE table SET col1 = 'data1', col2 = 'data2', col3 = 'data3', WHERE ID = '$ID'";
问题是, WHERE之前的sql语句中的最后一个逗号。这需要删除。
所以我尝试了
$sql = "UPDATE table SET $col1$col2$col3 WHERE ID = '$ID'";
$sql = str_replace(", WHERE", " WHERE", $sql);
但这似乎忽略了它。我想也许我需要先做类似strval($sql) 的事情,但还是没有用。
有没有办法让它工作?我是否也让这变得比我需要的更难?
【问题讨论】:
-
因为
$col3可能并不总是语句中的最后一个变量。请记住,如果数据为空,它将有一个空变量,因此不会出现。我无法确定哪个变量总是最后一个,这就是为什么我必须在每个变量的末尾加一个逗号。
标签: php str-replace