Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

  • Закрытая тема Тема закрыта

INSERT FROM ARRAY

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 12 Март 2011 - 01:33

Прочитал в интернете (firststeps.ru/foxpro/helpfox/r.php?517) материал по вставке в БД данных, и нашел такой атрибут как FROM ARRAY. У меня какраз все данные в массиве. Что я хотел спросить, как правильно использовать FROM ARRAY?

Часть кода
$data = array("$login", "$password", "$mail", "$sex", "$name", "$address", "$phone", "$date");

$query = mysql_query("INSERT INTO users FROM ARRAY $data");
$query ? print('good') : print('bad');

 

 

  • 0


#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 12 Март 2011 - 12:29

Banderas, ещё бы ты чего не почитал в документации к запросам баз данных из foxpro...

Читай книжки именно по MySQL, т.к. SQL это стандарт, а в разных СУБД помимо стандартных команд добавлены свои. Как ,например, в FoxPro присутствуют своя СУБД дополненная синтаксисом, который ты привел.
  • 0

#3 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 18 Март 2011 - 16:56

Лёха, сенкс, а я уже подумал что есть халява)))

Опять таки использую массивы для сокращения кода. Я те писал в личку, но ты пропал. Так что выставляю проблему на общий осмотр =)
Вставляю в БД данные из массива
mysql_query("INSERT INTO notes (title,meta_k, meta_d, text) VALUES (title='$data[0]', meta_k='$data[1]', meta_d='$date[2]', text='$data[3]')", $db) or die('ошибка БД');

Ошибок нет, но в БД заносятся нули. В чем проблема? Или лучше массив не использовать?
  • 0


#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 18 Март 2011 - 17:11

Banderas, почитай все имена переменных и всё поймешь. Хоть бы распечатал и посмотрел перед этим.
Вообще можно сделать намного проще запрос
1) Если нам не важны имена полей и мы знаем последовательность и какие поля имеют значения по умолчанию:
$data = array(
"'login'", // логин
"'password'", //пароль
0, //активность
...
);

$datas = implode(",", $data); // соединяем данные в строку
mysql_query("INSERT INTO table VALUE({$datas})");

Если нужно перечислить поля, то:
$data = array(
'login' => "'login'", // логин
'passowrd' => "'password'", //пароль
'active' => 0, //активность
...
);

$fields = implode(",", array_keys($data)); // соединяем поля в строку
$datas = implode(",", $data); // соединяем данные в строку
mysql_query("INSERT INTO table({$fields}) VALUE({$datas})");

Не забываем, что строковые данные в БД помещаются в кавычки. Поэтому перед объединением нужно на концах строковых данных добавить одинарные кавычки.
  • 0

#5 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 19 Март 2011 - 00:40

я сделал так
for ($i=0;$i<count($data);$i++) {
$data[$i] = '\''.$data[$i].'\'';
}
$datastr = implode(',', $data);
mysql_query("INSERT INTO notes (title, meta_k, meta_d, text) VALUES ($datastr)", $db) or die('ошибка БД');

  • 0


#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Март 2011 - 19:53

Banderas, каждый вариант имеет право на жизнь :)
Тему закрываю
  • 0


Оформление форума – IPBSkins.ru