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
Форумы портала PHP.SU :: Версия для печати :: Переменная как индекс массива в запросе к MYSQL
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Переменная как индекс массива в запросе к MYSQL

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

1. Максим21 - 04 Мая, 2011 - 00:28:40 - перейти к сообщению
Добрый день.
Подскажите
Во общем ставлю индекс в массиве с помощью переменной а echo и в бд этот индекс просто не принимается,просто пусто, если вписываю цифры в индекс массива, все в порядке.

PHP:
скопировать код в буфер обмена
  1.         $handle=fopen("files\\ask.txt",'r');
  2. $a=0;
  3.  
  4. $x=5;
  5. $db = mysql_connect( "localhost", "maxim", "maxim" );
  6. mysql_errno() . ": " . mysql_error() . "\n";
  7. mysql_select_db( "Vic", $db );
  8. while(!feof($handle)) {
  9.         $b[$a]=fgets($handle);
  10.         $a++;
  11. if($a==$x){
  12.             $x+=5;  
  13.  
  14. echo $x."</br>";
  15.         $f=$a+1;
  16.         $c=$a+2;
  17.         $d=$a+3;
  18.         $e=$a+4;
  19.        
  20. echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[$a]','$b[$f]','$b[$c]','$b[$d]','$b[$e]')" ;
  21. $result = mysql_query( "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[0]','$b[1]','$b[2]','$b[3]','$b[4]')");
  22. }


Спасибо
2. DlTA - 04 Мая, 2011 - 00:33:55 - перейти к сообщению
Максим21 пишет:
echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[$a]','$b[$f]','$b[$c]','$b[$d]','$b[$e]')" ;

перепишите код так:
PHP:
скопировать код в буфер обмена
  1. echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('{$b[$a]}','{$b[$f]}','{$b[$c]}','{$b[$d]}','{$b[$e]}')" ;
3. Максим21 - 04 Мая, 2011 - 00:37:49 - перейти к сообщению
DlTA пишет:
Максим21 пишет:
echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[$a]','$b[$f]','$b[$c]','$b[$d]','$b[$e]')" ;

перепишите код так:
PHP:
скопировать код в буфер обмена
  1. echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('{$b[$a]}','{$b[$f]}','{$b[$c]}','{$b[$d]}','{$b[$e]}')" ;



Все равно не видит.
4. DlTA - 04 Мая, 2011 - 00:44:01 - перейти к сообщению
значит индексы указывают в несуществующую область
простой вывод
echo "$a={$b[$a]}','$f={$b[$f]}','$c={$b[$c]}','$d={$b[$d]}','$e={$b[$e]}'";
и сразу будет видно что и куда указывает.
5. Максим21 - 04 Мая, 2011 - 00:48:25 - перейти к сообщению
DlTA пишет:
значит индексы указывают в несуществующую область
простой вывод
echo "$a={$b[$a]}','$f={$b[$f]}','$c={$b[$c]}','$d={$b[$d]}','$e={$b[$e]}'";
и сразу будет видно что и куда указывает.

Если просто ввожу вручную значение переменной как индекс в массив то все впорядке.
Или я не правильно понял?.
10=','11=','12=','13=','14='
echo "$a={$b[$a]}','$f={$b[$f]}','$c={$b[$c]}','$d={$b[$d]}','$e={$b[$e]}'";
видит переменные но теже что внутри фигурных уже не видет.
(Добавление)
То есть такое впечатление что нужен какой то синтакис SQL внутри запроса потому что вне его переменные в индексе нормально работают.
Буду искать
6. OrmaJever - 04 Мая, 2011 - 00:56:17 - перейти к сообщению
мне кажется просто нету таких индексов Растерялся
7. evgenijj - 04 Мая, 2011 - 00:57:08 - перейти к сообщению
Бредокод в чистом виде. Можно структуру файла? Тогда можно написать и скрипт интеграции файла в БД. fgets() использовать можно, но эта функция уже лет десять как устарела.
8. Максим21 - 04 Мая, 2011 - 00:58:37 - перейти к сообщению
OrmaJever пишет:
мне кажется просто нету таких индексов Растерялся

Улыбка
Может я действительно устал и не вижу очевидного, но я уже десять проверил, утро вечера мудреней, буду с утра долбить)
Спасибо всем.
(Добавление)
evgenijj пишет:
Бредокод в чистом виде. Можно структуру файла? Тогда можно написать и скрипт интеграции файла в БД. fgets() использовать можно, но эта функция уже лет десять как устарела.




А какой же функцией пользуются у Вас на сайте под черпнул?

1.Письмо от Вашего сотрудника. Скорее всего это:
a.Совет
b.Злостный прикол
c.Свежая порция сплетен
d.Веселая пародия на руководителя
2.Атмосфера в офисе:
a.Бывает разная
b.Творческая
c.Консервативная
d.Тяжелая
3.Утро понедельника. Ваш коллега:
a.Бойкий и болтливый
b.Истощенный и грустный
c.Игнорирует меня
d.Все время работает
4.Начало совещания. Ваш коллега:
a.Будет повторять монолог Гамлета
b.Сделает комплимент боссу по поводу его выбора туфель
c.Смущенно подойдет на 15 минут позже
d.Заклеймит презентацию нового проекта
e.Пожалуется на отсутствие бесплатного кофе[/quote]
9. evgenijj - 04 Мая, 2011 - 01:14:41 - перейти к сообщению
Максим21 пишет:
А какой же функцией пользуются у Вас на сайте под черпнул?

Вроде оба по-русски говорим, но взаимопонимания нет.
Что означает Ваша фраза? (Русский язык богат, жаль, что Вы им не владеете)
А какой же функцией пользуются у Вас?
А какой же функцией пользуются у Вас на сайте?
А какой же функцией пользуются? У Вас на сайте почерпнул.
Если верно последнее утверждение - на каком сайте почерпнули? Что почерпнули? Почерпнули что-то полезное?
10. Максим21 - 04 Мая, 2011 - 01:14:54 - перейти к сообщению
Наверно что то с циклом связано, что действительно индекса такого не существует.
(Добавление)
evgenijj пишет:
Максим21 пишет:
А какой же функцией пользуются у Вас на сайте под черпнул?

Вроде оба по-русски говорим, но взаимопонимания нет.
Что означает Ваша фраза? (Русский язык богат, жаль, что Вы им не владеете)
А какой же функцией пользуются у Вас?
А какой же функцией пользуются у Вас на сайте?
А какой же функцией пользуются? У Вас на сайте почерпнул.
Если верно последнее утверждение - на каком сайте почерпнули? Что почерпнули? Почерпнули что-то полезное?


Я имел ввиду функцию про которую Вы говорили, что она устарела. Да почерпнул вот эту самую функцию fgets)
11. evgenijj - 04 Мая, 2011 - 01:29:19 - перейти к сообщению
Мы здесь долго можем говорить "ни о чем". Чтобы сказать что-то мудрое, нужно посмотреть на файл ask.txt.
12. Максим21 - 04 Мая, 2011 - 01:43:45 - перейти к сообщению
[quote=evgenijj]
Максим21 пишет:
А какой же функцией пользуются у Вас на сайте под черпнул?


Извините, если я что то не так сказал, русским не владею, стыдно.

А дело все таки в цикле, так как запрос не успевает менять индексы,и в итоге берутся максимальные значение, которых в массиве кстати почему то не оказывается, в итоге пусты строки.
Вот странно почему fgets присваивает еще несколько пустых строк возможно нужен символ конца файла.
13. DlTA - 04 Мая, 2011 - 03:02:44 - перейти к сообщению
вообще посоветовал бы более наглядно оформлять код, скорее всего только из за этого и не заметили ошибку в этом месте
Максим21 пишет:
if($a==$x)
{
$x+=5;  
echo $x."</br>";
 $f=$a+1;
 $c=$a+2;
 $d=$a+3;
 $e=$a+4;
ошибка заключается в том что когда прочитан набор "1 вопрос и 4 ответа" ваш код пытается это дело записать НО индексы просчитываются не в ту сторону

пытаюсь объяснить наглядно
в $b[0]-вопрос $b[1]-$b[4] - ответы.
а после того как вы заполнили эти поля происходит обращение в поля начиная с 5
тоесть $b[5]-вопрос $b[6]-$b[9] - ответы. которые еще не определены.

надо было писать чет типа:
 $f=$a-4;
 $c=$a-3;
 $d=$a-2;
 $e=$a-1;
ну и для вопроса использовать не $a а какой нить $aa=$a-5;
и усе)
14. Максим21 - 04 Мая, 2011 - 13:14:30 - перейти к сообщению
DlTA пишет:
вообще посоветовал бы более наглядно оформлять код, скорее всего только из за этого и не заметили ошибку в этом месте
Максим21 пишет:
if($a==$x)
{
$x+=5;  
echo $x."</br>";
 $f=$a+1;
 $c=$a+2;
 $d=$a+3;
 $e=$a+4;
ошибка заключается в том что когда прочитан набор "1 вопрос и 4 ответа" ваш код пытается это дело записать НО индексы просчитываются не в ту сторону

пытаюсь объяснить наглядно
в $b[0]-вопрос $b[1]-$b[4] - ответы.
а после того как вы заполнили эти поля происходит обращение в поля начиная с 5
тоесть $b[5]-вопрос $b[6]-$b[9] - ответы. которые еще не определены.

надо было писать чет типа:
 $f=$a-4;
 $c=$a-3;
 $d=$a-2;
 $e=$a-1;
ну и для вопроса использовать не $a а какой нить $aa=$a-5;
и усе)


Спасибо за помощь.
Во общем сделал так, может бредо код но в силу моих возможностей.
PHP:
скопировать код в буфер обмена
  1. $handle=file("files\\ask.txt");
  2. $a=0;
  3. $db = mysql_connect( "localhost", "maxim", "maxim" );
  4. mysql_errno() . ": " . mysql_error() . "\n";
  5. mysql_select_db( "Victorina", $db );
  6.  
  7. $mass=array_chunk($handle,5);
  8.  
  9. while($a<=3) {
  10. $massask[$a]=$mass[$a][0];
  11. $vv=next($massask);
  12. $massv1[$a]=$mass[$a][1];
  13. $massv2[$a]=$mass[$a][2];
  14. $massv3[$a]=$mass[$a][3];
  15. $massv4[$a]=$mass[$a][4];
  16. $result = mysql_query( "INSERT INTO Otveti (Vopros,Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$massask[$a]','$massv1[$a]','$massv2[$a]','$massv3[$a]','$massv4[$a]')",$db);
  17. mysql_errno() . ": " . mysql_error() . "\n";
  18. $a++;
  19. }

 

Powered by ExBB FM 1.0 RC1