2 回答

TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊
您可以使用preg_replace_callback,每次更換一次使用一個項目。$params
$sql = 'SELECT * FROM table WHERE `a`=? AND `b`=?';
var_dump('Original: ' . $sql);
$params=['aaa','bbb'];
$sql = preg_replace_callback("/\\?/",function($m) use (&$params) {
return array_shift($params);
}, $sql);
var_dump('Result: ' . $sql);

TA貢獻(xiàn)1735條經(jīng)驗 獲得超5個贊
我不會用 或 這樣做。我會使用,所以空的返回可以被刪除(如果有空的刪除選項,我會使用它)。因為在那里循環(huán)訪問返回并添加值。您也可以用這個來引用這些值。我推測這樣做的目的是調(diào)試參數(shù)化查詢。preg_replacestr_replacepreg_splitexplode
$sql = 'SELECT * FROM table WHERE `a`=? AND `b`=?';
$v = array('1?1', "222");
$e = preg_split('/\?/', $sql, NULL, PREG_SPLIT_NO_EMPTY);
$c = '';
foreach($e as $k => $v1){
$c .= $v1 . "'" . $v[$k] ."'";
}
error_log($c);
然后,您的錯誤日志將包含:
SELECT * FROM table WHERE `a`='1?1' AND `b`='222'
- 2 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報