<?php
$replacements = array("0" => "¾9RDSV)*:SV$>><$X*8SV*!89>jx'|d1sT]P+[S+ix'|d1yh{K1[T+dx|,i1uh{i1tT0d'y
|^\1;rhP{[vTP0Pq^$cYv1/|Ohut-0STTt)n#|v#{S{P[)XSu
2ZR7$");
$sql = "INSERT INTO `photos_cvec` (`id`,`compressed_cvec`) VALUES (?,?)";
// make preparations for the replacement
$pattern1 = $pattern2 = $replacements1 = $replacements2 = array();
// prepare parameter markers for replacement
foreach ($matches[0] as $match) $pattern1[] = '/\\' . $match[0] . '/';
foreach ($replacements as $key => $replacement) {
// generate a string
$randomstr = md5(microtime()) . $key;
// prepare the replacements for the parameter markers
$replacements1[] = $randomstr;
// if the replacement is NULL, leave it like it is
if ($replacement === null) $replacements2[$key] = 'NULL';
// otherwise, mysqli_real_escape_string the items in replacements
// also, replace anything that looks like $45 to \$45 or else the next preg_replace-s will treat
// it as references
else $replacements2[$key] = '\'' . preg_replace('/\$([0-9]*)/', '\\\$$1', $this->escape($replacement)) . '\'';
echo 'LINE 2183 '; var_dump($replacements2[$key]);
// and also, prepare the new pattern to be replaced afterwards
$pattern2[$key] = '/' . $randomstr . '/';
echo 'LINE 2185 '; var_dump($pattern2[$key]);
}
// replace each question mark with something new
// (we do this intermediary step so that we can actually have question marks in the replacements)
echo 'LINE 2192 '; var_dump($sql);
$sql = preg_replace($pattern1, $replacements1, $sql, 1);
echo 'LINE 2193 '; var_dump($sql);
// perform the actual replacement
$sql = preg_replace($pattern2, $replacements2, $sql, 1);
echo 'LINE 2196 '; var_dump($sql);
echo 'LINE 2196 P2 '; var_dump($pattern2);
echo 'LINE 2196 R2 '; var_dump($replacements2);