А вот это что у николая?
protected function createSqlString($params)
{
$sql = $this->rawSql;
foreach ($params['types'] as $k => $type) {
$value = $this->escape($params['vars'][$k], $type);
$sql = preg_replace('#\?#', $value, $sql, 1);
}
return $sql;
}
@param @param @return
protected function escape($param, $type)
{
switch ($type) {
case 'i' :
return (int)$param;
case 'd' :
return "'". (float)$param ."'";
case 's' :
case 'b' :
return "'". $this->mysqli->real_escape_string($param) ."'";
default :
AbcError::invalidArgument('Component Mysqli: '. ABC_NO_MYSQLI_TYPE . $type);
}
}
А у меня, к примеру
public static function escape( $data ) {
if(is_array($data))
$data = array_map('self::escape', $data);
else
$data = mysqli_real_escape_string(self::$link, $data);
return $data;
}
public static function prepare( $query, $args ) {
if( is_null($query) )
return;
$args = func_get_args();
array_shift($args);
if( isset($args[0]) && is_array($args[0]) )
$args = $args[0];
$query = str_replace( "'%s'", '%s', $query );
$query = str_replace( '"%s"', '%s', $query );
$query = preg_replace( '|(?<!%)%f|' , '%F', $query );
$query = preg_replace( '|(?<!%)%s|', "'%s'", $query );
$args = self::escape($args);
return @vsprintf( $query, $args );
}
public static function insert( $table, $data, $format = null ) {
return self::insert_helper( $table, $data, $format, 'INSERT' );
}
public static function insert_helper( $table, $data, $format = null, $type = 'INSERT' ) {
if ( ! is_array($data) ) {
return false;
}
$formats = $values = array();
$type = strtoupper($type);
$data = self::process_formats($data, $format);
if( false === $data ) {
return false;
}
foreach ( $data as $value ) {
if ( is_null( $value['value'] ) ) {
$formats[] = 'NULL';
continue;
}
$formats[] = $value['format'];
$values[] = $value['value'];
}
$fields = '`' . implode( '`, `', array_keys( $data ) ) . '`';
$formats = implode( ', ', $formats );
$sql = "$type INTO `$table` ($fields) VALUES ($formats)";
self::$check_current_query = false;
self::Query( self::prepare($sql, $values) );
$id = self::insertId();
return $id;
}
Я вас не заставляю использовать мой класс, берите что вам угодно. Надоело вам пояснять что до того как данные приходят в запрос их по любому нужно валидировать, не зависимо будете вы их эскейпить или нет