Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z array w INSERT INTo
Forum PHP.pl > Forum > PHP
spit
Cześć.
Niedawno zacząłem uczyć się programowania obiektowego. Chciałem wczoraj napisać klasę do operacji na bazie danych. Udało mi się napisać łączenie, liczenie, pobieranie danych. Naturalną koleją rzeczy, dzisiaj przyszło dodawanie. Tak więc mam taką klasę:
  1. <?php
  2. class MySQL {
  3. // (...)
  4.  
  5. function Insert($into, $tab) {
  6. foreach($tab as $t => $v) {
  7. $tabs[] = $t;
  8. $values[] = $v;
  9. }
  10. $t_list = join(', ', $tabs);
  11. $v_list = join(', ', $values);
  12. $i = mysql_query("INSERT INTO $into ($t_list) VALUES ($v_list)") or die(mysql_error());
  13. return $i;
  14. } 
  15. }
  16. ?>

I wywołuje ją
  1. <?php
  2. $DB = new MySQL;
  3. //laczenie sie z baza
  4. $DB -> Insert('folio', array ('nazwa' => 'jeden', 'opis' => 'dwa'));
  5. ?>

Co ciekawe, gdy robiłem to bez klasy, funkcji, tylko jako 'echo', by widzieć jak się prezentuje, wyglądało dobrze. Teraz jednak, przy próbie uruchomienia dostaję błąd "Unknown column 'jeden' in 'field list'". Powinno być 'insert info folio (nazwa, opis) values (jeden, dwa)'. Ktoś ma jakieś pomysły?
dr_bonzo
Cytat
'insert info folio (nazwa, opis) values (jeden, dwa)'. Ktoś ma jakieś pomysły?

1. I wlasnie jest, tylko to jest NIEPRAWIDLOWE, bo przeciez nie masz kolumn o nazwach `jeden` czy `dwa`. Jak mniemam to mialy byc stringi.

2.
  1. <?php
  2. $sql= "INSERT INTO $into ($t_list) VALUES ($v_list)";
  3. print( $sql );
  4. $i = mysql_query($sql) or die(mysql_error());
  5. ?>

dzieki temu zobaczysz jaka sqlke ci generuje
tomeksobczak
  1. <?php
  2. $v_list = join("', '", $values);
  3. $i = mysql_query("INSERT INTO $into ($t_list) VALUES ('$v_list')") or die(mysql_error());
  4. ?>

to powinno Ci pomóc
spit
Rozwiązanie tomkasobczaka jest, dobre, dzięki wielkie!
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.