Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Формирование INSERT-запроса из результирующей таблицы SELECT-запроса
 
 автор: Spenser   (03.01.2007 в 17:19)   письмо автору
 
 

Всех с прошедшим!!!
тут появился вопрос:
мне надо заполнить таблицу которая создается динамически,т.е:
количесво столбцов и их названия заранее не известно, что бы это узнать делаю запрос

$query = mysql_query("SELECT * FROM ".$namecatdb."model"); 
$var = mysql_num_fields($query); 
for($i=0; $i < $var; $i++) 

$res[$i] = mysql_field_name($query,$i);
}

далее получаю данные из формы в которой количество записей тоже не известно, но равно количеству полей в таблице минус 1

$k = 1;
while ($k < $var-1)
      {
    $nameparamdb[$k] = $_POST["$res[$k]"];
    echo $nameparamdb[$k]; //просто вывод
    $k++;
      }

теперь мне надо $nameparamdb[$k] записать в эту таблицу в соответствующие поля.
вопрос в следующем: как составить запрос когда названия и количество полей узнается только при выполнении данного скрипта?
я может чего не совсем понятное сказал, вы спрасите а я постараюсь уточнить.
сам запрос представляю след.образом:

$sql = "INSERT INTO imyatablici (цикл для полей таблицы)
            VALUES (цикл для значений переменных)";

помогите плиз!!!

   
 
 автор: Spenser   (03.01.2007 в 19:45)   письмо автору
 
   для: Spenser   (03.01.2007 в 17:19)
 

никто не может помочь?

   
 
 автор: Trianon   (03.01.2007 в 19:52)   письмо автору
 
   для: Spenser   (03.01.2007 в 17:19)
 

<?
$sep 
'('
$sql "INSERT INTO imyatablici";
for(
$k 0$k $var$k++, $sep ',')    
    
$sql .= $sep$res[$k];
$sql .= ")\r\n VALUES"
$sep '(';
for(
$k 0$k $var$k++, $sep ',')
    
$sql .= "$sep. '".mysql_escape_string($_POST[$res[$k]])."'";
$sql .= ')';

   
 
 автор: Spenser   (03.01.2007 в 19:58)   письмо автору
 
   для: Trianon   (03.01.2007 в 19:52)
 

а что делает mysql_escape_string?

   
 
 автор: ddhvvn   (03.01.2007 в 20:07)   письмо автору
 
   для: Spenser   (03.01.2007 в 19:58)
 

Экранирует кавычки

   
 
 автор: Trianon   (03.01.2007 в 21:34)   письмо автору
 
   для: Spenser   (03.01.2007 в 19:58)
 

Сам по себе - ничего осмысленного.
А вот обрамленный апострофами - формирует из строки литерал, удовлетворяющий синтаксису MySQL, c содержимым, эквивалентным содержимому строки - аргумента.

   
 
 автор: Spenser   (04.01.2007 в 13:33)   письмо автору
 
   для: Trianon   (03.01.2007 в 21:34)
 

попробывал сегодня твой код не работает. вот как он выглядит у меня:

$sep = '(';  
$sql = "INSERT INTO ".$namecatdb."model"; 
for($t = 1; $t < $var; $t++, $sep = ',')     
    $sql .= $sep. $res[$t]; 
$sql .= ")\r\n VALUES";  
$sep = '('; 
for($t = 1; $t < $var; $t++, $sep = ',') 
    $sql .= "$sep. '".mysql_escape_string($_POST[$res[$t]])."'"; 
$sql .= ')';
if (!mysql_query($sql))
   { 
   $text = 'Данные не были добавлены в таблицу (ошибка в заполнении таблицы)';
   }

запрос не выполняется и выводится значение $text.
в чем может быть дело?точно ли все правильно в синтаксисе?

   
 
 автор: Trianon   (04.01.2007 в 15:36)   письмо автору
 
   для: Spenser   (04.01.2007 в 13:33)
 

неплохо было бы напечатать $sql и mysql_error();

   
 
 автор: Spenser   (04.01.2007 в 16:12)   письмо автору
 
   для: Trianon   (04.01.2007 в 15:36)
 

это при распечатке $sql
INSERT INTO cameramodel(namemodel,descrmodel,image) VALUES(. 'shfgs',. 'sdfgfg',. '')
надо немного подправить )) поможешь?

   
 
 автор: Spenser   (04.01.2007 в 16:23)   письмо автору
 
   для: Trianon   (04.01.2007 в 15:36)
 

все, заработало! испраил немного код. вот что получилось:

$sep = '(';  
$sql = "INSERT INTO ".$namecatdb."model "; 
for($t = 1; $t < $var-1; $t++, $sep = ', ')     
    $sql .= $sep. $res[$t]; 
$sql .= ")\r\n VALUES ";  
$sep = '('; 
for($t = 1; $t < $var-1; $t++, $sep = ',') 
    $sql .= "$sep'".mysql_escape_string($_POST[$res[$t]])."'"; 
$sql .= ')';

может кому понадобится.
огромное спасибо Trianon!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования