I need a simple and fast solution to replace nth occurrence (placeholder) in a string.
For example, nth question mark in sql query should be replaced with a provide
None of your solutions worked for me, so I made this:
$sql1 = "SELECT * FROM allegro_user WHERE User_Emp_Nb = ? AND User_Activ_status = ?";
$sql2 = "SELECT * FROM allegro_user WHERE User_Emp_Nb = :emp_nb AND User_Activ_status = :activ";
function prepare_query($sql, $args) {
foreach ($args as $key => $value) {
if (is_numeric($key)) {
$sql = preg_replace('/\?/', "'" . $value . "'", $sql, 1);
} else {
$sql = str_replace($key, "'" . $value . "'", $sql);
}
}
return $sql;
}
tab($sql1);
$sql = prepare_query($sql1, array('0216313', 'A'));
tab($sql1);
tab($sql2);
$sql = prepare_query($sql2, array(':emp_nb' => '0216313', ':activ' => 'A'));
tab($sql2);
tab() is just a function I use for printing :
echo '';
print_r($tab);
echo '
';