Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] problem z zapytaniem od php
sweter
post 1.09.2009, 13:30:11
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?



--------------------
Go to the top of the page
+Quote Post
nospor
post 1.09.2009, 13:33:56
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sweter
post 1.09.2009, 13:46:10
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
nospor
post 1.09.2009, 13:48:18
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sweter
post 1.09.2009, 13:59:46
Post #5





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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' );




--------------------
Go to the top of the page
+Quote Post
nospor
post 1.09.2009, 14:03:28
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sweter
post 1.09.2009, 15:34:56
Post #7





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?

Ten post edytował sweter 1.09.2009, 15:37:27


--------------------
Go to the top of the page
+Quote Post
skowron-line
post 1.09.2009, 15:50:18
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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 );


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 16:44