создание запроса INSERT

Ruzzz

Новичок
создание запроса INSERT

Для создания запроса Insert использую следующий код:

PHP:
 <?php
 // Эта функция нужна лишь для array_map('PrepareFieldValueForQuery', $result);
 //   которая используется в функции ниже GetParams()
 //   чтобы подготовить строковые параметры для SQL запроса
 function PrepareFieldValueForQuery($value)
 {
   return '\'' . mysql_real_escape_string($value) . '\'';
 }
  
 // Это функция с помощью которой я извлекаю строковые параметры, 
 //   которые были переданы скрипты методом POST
 // Здесь я проверяю был ли передан параметр с именем $var
 // Заодно проверяю заданый мной лимит на длину строки и
 //   нужно ли эту строку "подготовить" для вывода в браузере с помощью htmlspecialchars
 //   дело в том что не все строки я экранирую
 // Каждый параметр я добавляю в ассоц. массив
 function CheckStringParam(&$arr, $var, $len_limit, $safe_for_html = true) {  
   if (isset($_POST[$var])  && !empty($_POST[$var])) {
     $str = $_POST[$var];
     if ($safe_for_html) $str = htmlspecialchars($str);
     if (($len_limit > 0) && (mb_strlen($str) > $len_limit)) $str = mb_substr($str, 0, $len_limit);
     $arr[$var] = $str;
   }
 }
     
 // Функция формирует массив параметров, для построения запроса
 function GetParams() {
   CheckStringParam($result, 'name', 100);
   CheckStringParam($result, 'keywords', 255);
   CheckStringParam($result, 'description', 255);
   CheckStringParam($result, 'title', 100);
   CheckStringParam($result, 'caption', 200);
   $result['date'] = date('Y-m-d H:i:s');
   $result['date_gmt'] = gmdate('Y-m-d H:i:s');
   CheckStringParam($result, 'content', 0, false);
   $result = array_map('PrepareFieldValueForQuery', $result);
   return $result;
 }
   
 // Нужна лишь для кода $result = array_map('PrepareFieldNameForQuery', $result);
 function PrepareFieldNameForQuery($name) {
   return '`' . $name . '`';
 }
   
 // Получаю строку - часть для запроса, в которой будут переданы имена полей через запятую
 // Формирую из ключей заранее подготовленного массива
 function GetFieldsNames($arr) {
   $result = array_keys($arr);
   $result = array_map('PrepareFieldNameForQuery', $result);
   $result = implode(', ', $result);
   return $result;
 }
   
   // И так начало скрипта по добавлению в таблицу информации на основе данных
   //   посланных методом POST из формы
   
   // Формируем, ассоц. массив параметров
   // Где, ключ массива - это имя поля таблицы - 
   //   соотв. имя параметра переданого из формы методом POST
   $params = GetParams();  
   // Создаем часть строки запроса, новые значения через запятую  
   $fields_values = implode(', ', $params);
   // См. GetFieldsNames
   $fields_names = GetFieldsNames($params);
   // Получаем полную строку запроса
   $query = 'INSERT INTO `pages` ('.$fields_names.') VALUES ('.$fields_values.')';
   // Далее идет код который выполняет запрос
   // И говорит что все ОК или наоборот выдает сообщение об ошибке
  ?>
У меня есть поля которые могут быть null. Поэтому если их не передали то и не хочу их добавлять(даже пустые) в таблицу. Создаю ассоц. массив, где лючи это имена полей. В GetParams формирую этот массив, заодно и проверяю переданные данные.

я решил как то упростить проверку каждой переданой строки. И хотел придумать как создавать строку запроса, учтывая что если переданная строка пустая, то я ее не включаю в запрос

Прокомментируйте позжлста!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
phpclasses.org
pear.php.net

-~{}~ 20.02.08 23:31:

И самое главное место
google.com
 

Ruzzz

Новичок
Почему каждый кто хоть какой-то опыт имеет сразу начинает думать что все остальные не знают про гугл, именно он меня и привел сюда.

Для профи ничего не стоит просмотреть часть кода, и увидеть что-то что раньше не встречал, или сразу же заметить ошибки, которые и сам когда-то делал.

я новичок в php, но не в программировании и поиске инфы
за ссылки спасибо!

-~{}~ 20.02.08 23:48:

в гугле набрал "способы реализации INSERT запроса в PHP", наберите, вы прийдете на что-то толковое?
 

A1x

Новичок
Автор оригинала: Ruzzz
Для профи ничего не стоит просмотреть часть кода, и увидеть что-то что раньше не встречал, или сразу же заметить ошибки, которые и сам когда-то делал.

в гугле набрал "способы реализации INSERT запроса в PHP", наберите, вы прийдете на что-то толковое?
какой вопрос - такой ответ. hint: INSERT запрос это скорее SQL чем PHP ;-)

некоторые новички почему-то думают что "Для профи ничего не стоит просмотреть часть кода" ))
 

Ruzzz

Новичок
я же не спрашиваю как должен выглятеть этот запрос, я просил прокоментировать мой способ создания запроса с помощью PHP
 

A1x

Новичок
я хотел сказать что на запрос гуглу "способы реализации INSERT запроса в PHP" врядли можно ожидать получить что-то толковое
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Ruzzz
Ты не обижайся.
Здесь часто в гугл посылают.
Многие идут и "гуглЯт".
Многие возмущаются как ты.

я новичок в php, но не в программировании и поиске инфы
Да-ну. ;)

php database class
php database function
php database layer
 

Фанат

oncle terrible
Команда форума
O mein gott, какие сложности!

Доктор, если мне хватает всего лишь такой функции
PHP:
function dbSet($fields) {
  $q='';
  foreach ($fields as $v) $q.=$v."='".mysql_real_escape_string($_POST[$v])."', ";
  return trim($q,", ");
}
- я умру?
 

asterisk

Новичок
как вариант:

PHP:
$q = array();
foreach ($fields as $v) $q[] =$v."='".mysql_real_escape_string($_POST[$v])."'";
return join(", ", $q);
 
Сверху