[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать запрос Insert Into
ChaoS
Есть база данных, соответственно есть там и таблицы, их много. Имя нужной таблицы храниться в переменной $tab. Вопрос: как добавть данные в таблицу с помощью запроса, если названия полей таблицы не известны, но их можно достать оттуда функцией "mysql_field_name". Как будет выглядить такой вид запроса Insert Into для данного случая? помогите кто знает, очень надо



Спустя 1 час, 5 минут, 33 секунды (2.10.2010 - 13:35) inpost написал(а):
ChaoS
А что мешает открыть и узнать? Или это снова хакерские забавы?

Спустя 40 минут, 13 секунд (2.10.2010 - 14:16) Mizka написал(а):
ну можно примерно так:
function insertDynamicData($tab, $values){
if(!empty($tab)){
$query = mysql_query('SELECT * FROM `'.$tab.'`');
for($i = 0; $i < mysql_num_fields($query); $i++){
$fieldNames[] = mysql_field_name($query, $i);
}
}
else {
exit('Please, enter a name of a table');
}
if(is_array($values)){
$populateQuery = null;
$count = count($fieldNames) >= count($values) ? count($values) : count($fieldNames);
for($i = 1; $i < $count; $i++){
$populateQuery .= $i < $count - 1 ? $fieldNames[$i]." = '".mysql_real_escape_string($values[$i])."', " : $fieldNames[$i]." = '".mysql_real_escape_string($values[$i])."'";
}
}

$insertQuery = mysql_query("INSERT INTO `".$tab."` SET ".$populateQuery);
if(!$insertQuery){
exit(mysql_error());
}
}

insertDynamicData('tablename', array('1', '4', '3', '4'));

Спустя 54 минуты, 9 секунд (2.10.2010 - 15:10) Michael написал(а):
данный SQL-запрос:
show columns from tablename

вернет табличку построчно с данными о полях и их типах и др.

Спустя 14 часов, 23 минуты, 53 секунды (3.10.2010 - 05:34) ChaoS написал(а):
Michael, а как Этот запрос будет выглядеть на php?

Спустя 2 часа, 28 минут, 49 секунд (3.10.2010 - 08:02) Michael написал(а):
Цитата (ChaoS @ 3.10.2010 - 04:34)
Michael, а как Этот запрос будет выглядеть на php?

$res = mysql_query('show columns from ' . $tab);
if ($res) {
echo mysql_num_rows($res); // кол-во полей таблицы
while ($row = mysql_fetch_assoc($res)) {
echo $row['Field'] . '|' . $row['Type'] . '<br>';
}
}

набери в phpmyadmin этот запрос для любой таблицы и увидишь, какие ключи доступны(Field, ...)

Спустя 4 часа, 36 минут, 56 секунд (3.10.2010 - 12:39) ChaoS написал(а):
Ну вот теперь у меня есть количество полей их типы, причем в массивах, посоветуйте как лучше перегонять это все дело в очередь как писал Mizka или как то иначе?

Спустя 48 минут, 14 секунд (3.10.2010 - 13:28) Michael написал(а):
да, можно как он написал. Или под такую форму оператора:
insert into table(pole1, pole2, ...) values (1, 2, ...)
чуть сложнее будет тебе анализировать пропуск ввода например если поле auto_increment или ты хочешь дефолтное значение вставить.

Спустя 1 день, 1 час, 3 минуты, 38 секунд (4.10.2010 - 14:31) ChaoS написал(а):
Все добавляет, спс за помощь, только терь такой вопрос как сделать так чтобы данные вводились в форму и добавлялись в массив, ну что то типо того:



<form name="form" action="ololo.php" method="post">
<
table>
<?
for ($i=0; $i<count($tab);$i++)
{
echo "<tr>";
switch($row['Type'])
{
case varchar:
echo "<td>$row['Field']:</td><td><input type="" name=$row['Field'] /></td>";
case tinyint:
echo "<td>$row['Field']:</td><td><input type="" name=$row['Field'] /></td>";
case date:
echo "<td>$row['Field']:</td><td><input type="" name=$row['Field'] /></td>";
case int:
echo "<td>$row['Field']:</td><td><input type="" name=$row['Field'] /></td>";
case smallint:
echo "<td>$row['Field']:</td><td><input type="" name=$row['Field'] /></td>";
case text:
echo "<td>$row['Field']:</td><td><input type="" name=$row['Field'] /></td>";
break;
default:
echo ("Неизвестный тип данных");
}
echo "</tr>";
}
?>
</table>
</
form>



Ну тут я так понаписал ничего работать не будет, это чтобы понять чего я хочу)))
Можно сделать, что либо типо того что я написал?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.