1, Yukko (?), 16:36, 19/11/2003 [ответить]
| +/– |
В результате боевых испытаний на рабочем сайте выявлены ошибки.
Не удваивает одиночную кавычку в начале и в конце слова/фразы, которое надо вставить в запрос.
Пример:
INSERT INTO dbo.USERS (UserName,) VALUES (''yukko')
либо
INSERT INTO dbo.USERS (UserName,) VALUES ('yukko'')
Рег будет переписываться.
| |
2, Yukko (?), 11:59, 13/01/2004 [ответить]
| +/– |
Вот собственно новая редакция рега:
<?
$some_string = "
SET @idins = REPLACE(CONVERT(nvarchar(50), @myid), '-rrr'','dfj'njd' ) SET @userid = (SELECT ID FROM dbo.USERS WHERE (UserName = 'yuk'ko'))
";
$string = preg_replace("/(?<=[\(=,]|<>)\s*('.*?')(?=\s*[,\\x29]|\s+where|\s*$|\s+and|\s+or)/sie","my_func('\\0')",$some_string);
echo nl2br($string);
function my_func($string)
{
$start = strpos($string,"'");
$end = strrpos($string, "'");
$begin = substr($string, 0, $start+1);
$finish = substr($string, $end);
$middle = substr($string, $start+1,$end-$start-1);
$string = $begin.str_replace("'","''", $middle).$finish;
return($string);
}
?> | |
|
3, anonim (?), 18:56, 22/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
А чего не сделать проще ?
<?php
$query = "'yuk''ko''10'";
echo $query;
echo '
';
$query = preg_replace("/'/","''",$query);
echo $query;
echo '
';
$sql = "INSERT INTO dbo.USERS (UserName,) VALUES ('".$query."')";
echo $sql;
?>
| |
|
|