X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> INSERT FROM ARRAY, как работает?
Banderas
Banderas
Topic Starter сообщение 12.3.2011, 2:33; Ответить: Banderas
Сообщение #1


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

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

$query = mysql_query("INSERT INTO users FROM ARRAY $data");
$query ? print('good') : print('bad');[/php]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 12.3.2011, 13:29; Ответить: ZiTosS
Сообщение #2


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

Читай книжки именно по MySQL, т.к. SQL это стандарт, а в разных СУБД помимо стандартных команд добавлены свои. Как ,например, в FoxPro присутствуют своя СУБД дополненная синтаксисом, который ты привел.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
Topic Starter сообщение 18.3.2011, 17:56; Ответить: Banderas
Сообщение #3


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

Опять таки использую массивы для сокращения кода. Я те писал в личку, но ты пропал. Так что выставляю проблему на общий осмотр =)
Вставляю в БД данные из массива
[php]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('ошибка БД');[/php]
Ошибок нет, но в БД заносятся нули. В чем проблема? Или лучше массив не использовать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.3.2011, 18:11; Ответить: ZiTosS
Сообщение #4


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

$datas = implode(",", $data); // соединяем данные в строку
mysql_query("INSERT INTO table VALUE({$datas})");[/php]
Если нужно перечислить поля, то:
[php]$data = array(
'login' => "'login'", // логин
'passowrd' => "'password'", //пароль
'active' => 0, //активность
...
);

$fields = implode(",", array_keys($data)); // соединяем поля в строку
$datas = implode(",", $data); // соединяем данные в строку
mysql_query("INSERT INTO table({$fields}) VALUE({$datas})");[/php]
Не забываем, что строковые данные в БД помещаются в кавычки. Поэтому перед объединением нужно на концах строковых данных добавить одинарные кавычки.


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
Topic Starter сообщение 19.3.2011, 1:40; Ответить: Banderas
Сообщение #5


я сделал так
[php]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('ошибка БД');[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 22.3.2011, 20:53; Ответить: ZiTosS
Сообщение #6


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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 25.4.2024, 10:16
Дизайн