[英]str_replace with variable generated string not working with php
我確定這與使用變量填充字符串有關,但是我不確定如何解決該問題。
我有一個通過變量填充的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)
事情,但是又沒有用。
有沒有辦法讓它工作? 我是否比我需要的還要難?
代替:
if ($data1 != '') {
$col1 = "col1 = '".$data1."', "
}
if ($data2 != '') {
$col2 = "col2 = '".$data2."', "
}
if ($data3 != '') {
$col3 = "col3 = '".$data3."', "
}
使用類似:
$update_arr = array();
if ($data1 != '') {
$update_arr[] = "col1 = '".$data1."'";
}
if ($data2 != '') {
$update_arr[] = "col2 = '".$data2."'";
}
if ($data3 != '') {
$update_arr[] = "col3 = '".$data3."'";
}
然后像這樣創建查詢的更新部分:
if ($update_arr) {
$sql = "UPDATE table SET ".implode(", ", $update_arr)." WHERE ID = '$ID'";
}
您可以使用rtrim()
刪除最后一個逗號,如下所示:
$columns = null;
if ($data1 != '') {
$columns = "col1 = '$data1', ";
}
if ($data2 != '') {
$columns .= "col2 = '$data2', ";
}
if ($data3 != '') {
$columns .= "col3 = '$data3', ";
}
if ($columns) {
// remove any trailing ','
$columns = rtrim($columns, ',');
$sql = "UPDATE table SET $columns WHERE ID = '$ID'";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.