2 回答

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用preg_replace_callback,每次更換一次使用一個(gè)項(xiàng)目。$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)驗(yàn) 獲得超5個(gè)贊
我不會(huì)用 或 這樣做。我會(huì)使用,所以空的返回可以被刪除(如果有空的刪除選項(xiàng),我會(huì)使用它)。因?yàn)樵谀抢镅h(huán)訪問(wèn)返回并添加值。您也可以用這個(gè)來(lái)引用這些值。我推測(cè)這樣做的目的是調(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);
然后,您的錯(cuò)誤日志將包含:
SELECT * FROM table WHERE `a`='1?1' AND `b`='222'
- 2 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報(bào)