|
|
|
| Всех с прошедшим!!!
тут появился вопрос:
мне надо заполнить таблицу которая создается динамически,т.е:
количесво столбцов и их названия заранее не известно, что бы это узнать делаю запрос
$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 в 17:19)
| | никто не может помочь? | |
|
|
|
|
|
|
|
для: 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 .= ')';
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.01.2007 в 19:52)
| | а что делает mysql_escape_string? | |
|
|
|
|
|
|
|
для: Spenser
(03.01.2007 в 19:58)
| | Экранирует кавычки | |
|
|
|
|
|
|
|
для: Spenser
(03.01.2007 в 19:58)
| | Сам по себе - ничего осмысленного.
А вот обрамленный апострофами - формирует из строки литерал, удовлетворяющий синтаксису MySQL, c содержимым, эквивалентным содержимому строки - аргумента. | |
|
|
|
|
|
|
|
для: 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.
в чем может быть дело?точно ли все правильно в синтаксисе? | |
|
|
|
|
|
|
|
для: Spenser
(04.01.2007 в 13:33)
| | неплохо было бы напечатать $sql и mysql_error(); | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2007 в 15:36)
| | это при распечатке $sql
INSERT INTO cameramodel(namemodel,descrmodel,image) VALUES(. 'shfgs',. 'sdfgfg',. '')
надо немного подправить )) поможешь? | |
|
|
|
|
|
|
|
для: 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! | |
|
|
|