Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка в mysql-запросе

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Tox
Отправлено: 25 Июня, 2012 - 14:48:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Есть многомерный массив, пытаюсь записать значения в таблицу
PHP:
скопировать код в буфер обмена
  1. for($i=0; $i<count($arr); $i++) {
  2. //echo $arr[$i][0]."\n";
  3. mysql_query("INSERT INTO `table` (`x`, `y`, `z`) VALUES ('$arr[$i][0]', '$arr[$i][1]', '$arr[$i][2]');");
  4. echo mysql_errno() . ": " . mysql_error() . "\n";
  5. }

x - unique. В таблицу попадают строки "Array[0]" (0-2), а не сами значения '$arr[$i][1]`. Подскажите, может я кавычки не правильно ставлю? Хотя менял по-разному, все равно только одна строка с "Array[]" записывается (тут понятно, так как unique)


-----
In Console We Trust. Code hard. Or die.
 
 Top
EuGen Администратор
Отправлено: 25 Июня, 2012 - 14:59:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `table` (`x`, `y`, `z`) VALUES ('".$arr[$i][0]."', '".$arr[$i][1]."', '".$arr[$i][2]."');");

- гораздо проще читать и избежать ошибок.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Tox
Отправлено: 25 Июня, 2012 - 15:02:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




EuGen пишет:
PHP:
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `table` (`x`, `y`, `z`) VALUES ('".$arr[$i][0]."', '".$arr[$i][1]."', '".$arr[$i][2]."');");

- гораздо проще читать и избежать ошибок.

Спасибо, заработало Улыбка


-----
In Console We Trust. Code hard. Or die.
 
 Top
OrmaJever Модератор
Отправлено: 25 Июня, 2012 - 19:29:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




обращение к масивам и методам/свойстам обьектов в двойных скобках нужно в фигурных скобках.
PHP:
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `table` (`x`, `y`, `z`) VALUES ('{$arr[$i][0]}', '{$arr[$i][1]}', '{$arr[$i][2]}');");

Ну или как написал EuGen


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Tox
Отправлено: 25 Июня, 2012 - 19:55:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




А еще такой вопрос, чтобы не создавать новый топик - чисто технический (тоже про многомерный массив).
Если надо соединить несколько массивов в 1 - юзаем array_merge. А если ситуация такая - нам надо разбить многомерный массив и вместо него сделать один простой большой массив.
$arr1 - многомерный массив, с 3мя индексами.
PHP:
скопировать код в буфер обмена
  1. $arr1= array_merge ($arr1[0], $arr11[1], $arr1[2]);

это все понятно, но мы заранее должны знать, сколько позиций прописывать в array_merge. А если мы не знаем, и дело это автоматизировать?
Да, через count узнаем число индексов. А как дальше? Понятное дело, можно через switсh, но это извращение.


-----
In Console We Trust. Code hard. Or die.
 
 Top
Panoptik
Отправлено: 25 Июня, 2012 - 20:06:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




http://www.php.su/functions/?arr...-merge-recursive может это поможет?
(Добавление)
или так


-----
Just do it
 
 Top
OrmaJever Модератор
Отправлено: 25 Июня, 2012 - 20:13:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Tox пишет:
Да, через count узнаем число индексов. А как дальше?

call_user_func_array()
1 параметр название функции (array_merge)
2 параметр - масив параметров в этот колбек.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Tox
Отправлено: 25 Июня, 2012 - 20:22:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)





то пишет ошибку - >Warning</b>: array_merge() [<a href='function.array-merge'>function.array-merge</a>]: Argument #2 is not an array in N
Если , то все пашет, спасибо


-----
In Console We Trust. Code hard. Or die.
 
 Top
OrmaJever Модератор
Отправлено: 25 Июня, 2012 - 20:28:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Tox пишет:
то все пашет, спасибо

Надо больше теории, Хотябы пролистать все функции и прочитать описаниее, что бы значит что такая функция существует.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB