猿问

从数组值替换字符串中的某些字符

我有一个数组:


$arr = [5, "David"];

我有一个查询:


$query = "SELECT * FROM users WHERE user_id = ? AND user_name = ?";

我想创建一个记录器查询,该查询使用这2个查询并手动返回查询。


logger($query, $arr); // returns : SELECT * FROM users WHERE user_id = 5 AND user_name = 'David'

我正在使用雄辩的胶囊管理器。


我试图做这样的事情,但它并不能代替任何东西:


function logger($query, $arr) {

    foreach($arr as $a) {

        is_numeric($a) ? str_replace("?",$a,$query) : str_replace("?","'".$a."'",$query);

    }

    return $query;

}

为什么此代码不起作用?


慕工程0101907
浏览 161回答 2
2回答

绝地无双

我通过使用str_replace_first并将值辅助为变量来了解如何做到这一点。        foreach($params as $a) {            $query = is_numeric($a) ? str_replace_first("?",$a,$query,1) : str_replace_first("?","'".$a."'",$query);        }        return $query;str_replace_first :function str_replace_first($search_for, $replace_with, $in) {  $pos = strpos($in, $search_for);  if($pos === false) {    return $in;  } else {    return substr($in, 0, $pos) . $replace_with . substr($in, $pos + strlen($search_for), strlen($in));  }}
随时随地看视频慕课网APP
我要回答