Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] problem z zapytaniem od php
Forum PHP.pl > Forum > Przedszkole
sweter
Będę się streszczał:

Mam plik XML i chcę z niego wyciągam z niego pewne informacje do tabeli w MySQL.

Gdy robię to z poziomu PHP to wywala mi błąd:

Cytat
Column count doesn't match value count at row 1 


Gdy jednak wpiszę to zapytanie do bazy przez panel phpMyAdmin t zostaje dodany nowy rekord.

Czemu?

nospor
Ja tez sie bede streszczal: liczba wartosci nie zgadza sie liczbie kolumn.

Cytat
Gdy jednak wpiszę to zapytanie do bazy przez panel phpMyAdmin t zostaje dodany nowy rekord.

Czemu?
Doswiadczenie uczy ze poczatkujacym uzytkownikow wydaje sie tylko iz wpisują to samo zapytanie tongue.gif
sweter
Cytat
Doswiadczenie uczy ze poczatkujacym uzytkownikow wydaje sie tylko iz wpisują to samo zapytanie

Wpisałem na pewno to samo zapytanie, bo tuż za mysq_query() dałem echo $zap i wynik skopiowałem do phpMyAdmina. smile.gif

Cytat
liczba wartosci nie zgadza sie liczbie kolumn.

Zgadza się, bo liczyłem smile.gif
nospor
komunikat twierdzi co innego. pokaz kod, pokaz co ci dalo to echo to pogadamy konkretnie. Na chwile obecną diagnoza jest jednoznaczna: nie zgadza sie liczba wartosci do liczby kolumn
sweter
Tak wygląda kod wykonujący zapytanie do bazy:

  1.  
  2. $xml = simplexml_load_file("./rozpakowane/tripfulllist.xml");
  3. foreach($xml->trip as $trip){
  4. $pyt = "";
  5. foreach($trip->transport as $transport){}
  6. foreach($trip->prices as $prices){
  7. foreach($prices->price as $price){
  8. $pyt = $pyt.", '".substr($price->type, 0, 4)."', '".$price->amount."', '".$price->age_from."', '".$price->age_to."'";
  9. }
  10. }
  11.  
  12.  
  13. /*echo "<pre>";
  14. print_r($transport);
  15. echo "</pre>";
  16. */
  17. echo "<b>".$trip->transport."</b>";
  18.  
  19. $zap = "
  20. INSERT INTO `baza`.`wycieczki` (
  21. `id` ,
  22. `typ_wycieczki` ,
  23. `id_oferty` ,
  24. `dlugosc_pobytu` ,
  25. `data_start` ,
  26. `data_koniec` ,
  27. `cena_bazowa` ,
  28. `typ1`,
  29. `cena_dod1` ,
  30. `wiek_od1` ,
  31. `wiek_do1` ,
  32. `typ2`,
  33. `cena_dod2` ,
  34. `wiek_od2` ,
  35. `wiek_do2` ,
  36. `typ3`,
  37. `cena_dod3` ,
  38. `wiek_od3` ,
  39. `wiek_do3` ,
  40. `typ4`,
  41. `cena_dod4` ,
  42. `wiek_od4` ,
  43. `wiek_do4` ,
  44. `typ5`,
  45. `cena_dod5` ,
  46. `wiek_od5` ,
  47. `wiek_do5` ,
  48. `typ6`,
  49. `cena_dod6` ,
  50. `wiek_od6` ,
  51. `wiek_do6`
  52. )
  53. VALUES (
  54. NULL, '".$trip[id]."', '".$trip->type."', '".$trip->offerid."', '".$trip->length."', '".$trip->startdate."', '".$trip->enddate."', '".$prices->baseprice."'".$pyt."
  55. );
  56. ";
  57. mysql_query($zap);
  58. echo $zap;
  59. echo "<br /><br />";
  60.  
  61. foreach($transport->departure as $departure){
  62. if($departure->type=="flight"){
  63. $nr_linii_lot = $departure->flightno;
  64. $kod_linii_lot = $departure->airline;
  65. }else{
  66. $nr_linii_lot = "";
  67. $kod_linii_lot = "";
  68. }
  69. $zap = "
  70. INSERT INTO `baza`.`wyjazdy_przyjazdy` (
  71. `id` ,
  72. `id_wycieczki` ,
  73. `przyjazd_odjazd` ,
  74. `typ` ,
  75. `nr_linii_lot` ,
  76. `kod_linii_lot` ,
  77. `data_rozp` ,
  78. `czas_rozp` ,
  79. `data_zakon` ,
  80. `czas_zakon` ,
  81. `rozp` ,
  82. `zakon`
  83. )
  84. VALUES (
  85. NULL, '".$trip[id]."', 'prz', '".$departure->type."', '".$nr_linii_lot."', '".$kod_linii_lot."', '".$departure->departure_date."', '".$departure->departure_time."', '".$departure->arrival_date."', '".$departure->arrival_time."', '".$departure->departurenode."', '".$departure->arrivalnode."'
  86. );
  87. ";
  88. echo $zap;
  89. mysql_query($zap);
  90. echo "<br /><br />";
  91. }
  92. foreach($transport->arrival as $arrival){
  93. if($departure->type=="flight"){
  94. $nr_linii_lot = $arrival->flightno;
  95. $kod_linii_lot = $arrival->airline;
  96. }else{
  97. $nr_linii_lot = "";
  98. $kod_linii_lot = "";
  99. }
  100. $zap = "
  101.   INSERT INTO `baza`.`wyjazdy_przyjazdy` (
  102. `id` ,
  103. `id_wycieczki` ,
  104. `przyjazd_odjazd`,
  105. `typ` ,
  106. `nr_linii_lot` ,
  107. `kod_linii_lot` ,
  108. `data_rozp` ,
  109. `czas_rozp` ,
  110. `data_zakon` ,
  111. `czas_zakon` ,
  112. `rozp` ,
  113. `zakon`
  114. )
  115. VALUES (
  116. NULL, '".$trip[id]."', 'odj', '".$arrival->type."', '".$nr_linii_lot."', '".$kod_linii_lot."', '".$arrival->departure_date."', '".$arrival->departure_time."', '".$arrival->arrival_date."', '".$arrival->arrival_time."', '".$arrival->departurenode."', '".$arrival->arrivalnode."'
  117. );
  118. ";
  119. echo $zap;
  120. mysql_query($zap);
  121. echo "<br /><br />";
  122. }
  123. }
  124.  
  125.  


A wyświetla mi:

Cytat
//wcześniej jest 21 zapytań

INSERT INTO `baza`.`wyjazdy_przyjazdy` ( `id` , `id_wycieczki` , `przyjazd_odjazd`, `typ` , `nr_linii_lot` , `kod_linii_lot` , `data_rozp` , `czas_rozp` , `data_zakon` , `czas_zakon` , `rozp` , `zakon` ) VALUES ( NULL, '291709', 'odj', 'flight', '726', 'SRN', '2009-10-12', '16:10', '2009-10-12', '20:10', 'TCP', 'KTW' ); 

Column count doesn't match value count at row 1 INSERT INTO `baza`.`wycieczki` ( `id` , `typ_wycieczki` , `id_oferty` , `dlugosc_pobytu` , `data_start` , `data_koniec` , `cena_bazowa` , `typ1`, `cena_dod1` , `wiek_od1` , `wiek_do1` , `typ2`, `cena_dod2` , `wiek_od2` , `wiek_do2` , `typ3`, `cena_dod3` , `wiek_od3` , `wiek_do3` , `typ4`, `cena_dod4` , `wiek_od4` , `wiek_do4` , `typ5`, `cena_dod5` , `wiek_od5` , `wiek_do5` , `typ6`, `cena_dod6` , `wiek_od6` , `wiek_do6` ) VALUES ( '290632', 'LAST', '5575', '7', '2009-09-09', '2009-09-16', '1919', '1CHD', '1759', '2', '12', 'AD3', '1919', '0', '0', 'SGL', '2499', '0', '0' );


nospor
nie analizowalem kodu, ale drugie zapytanie co zapodales ewidentnie rozni się liczbą wartosci w stosunku do kolumn. Przeciez to nawet bez liczenia golym okiem widac....
sweter
Dzięki za pomoc smile.gif

Problemem okazał się brak brakujących nawiasów w zmiennej $pyt biggrin.gif

Napisałem takie coś, żeby dodawało do $pyt odpowiednią ilość 

Cytat
, ''


  1.  
  2. if(count(explode(",", $pyt))<24){
  3.   echo count(explode(",", $pyt));  
  4.   for($q=0; $q<(24-count(explode(",", $pyt))); $q++){
  5.     $pyt = $pyt."'',".$q;
  6.   }
  7. }
  8.  
  9.  


Niby prosty kod, a siedzę nad nim już drugą godzinę...

count(explode(",", $pyt)) powinno mieć wartość 24.

Najśmieszniejsze jest to, że jak w pętli dam (przecinek, spacja i dwa pojedyncze cudzysłowy)

  1.  
  2. $pyt = $pyt.", ''".$q;
  3.  


pętla wykonuje się mniej razy niż powinna, a jak zamienię to tym (dwa pojedyncze cudzysłowy):

  1.  
  2. $pyt = $pyt."''".$q;
  3.  


pętla jest wykonywana odpowiednią ilość razy.

Czyli winowajcą jest przecinek?
skowron-line
Sorry za OT
ale czy nikt cie nie uświadomił że takich rzeczy się nie pisze questionmark.gif
  1. for($q=0; $q<(24-count(explode(",", $pyt))); $q++)


i zrob sobie tak
  1. $temp[] = '"'. $zmienna .'"';

i po pętli
  1. echo join( ',', $temp );
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.