Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Dodawanie rekordów, OOP
Lee
post
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


Mam problem z dodawaniem rekordów do bazy danych MySQL używając klas w php5. Otóż gdy któreś z pól formularzu jest niewypełnione (nieobowiązkowe typu gg) to skrypt dodający wpis wysypuje się, wywala:
Cytat
Column count doesn't match value count at row 1

Co znaczy, że nie zgadza się ilość kolumn o czym wiem, ale nie wiem jak temu zapobiedz. Otóż dane wysyłam do metody w ten sposób:
  1. <?php
  2. $params = array('kolumna1', 'kolumna2');
  3. $values = array($dane1 $dane2);
  4. $mysql -> add_row($params, $values, $nazwa_tabeli);
  5. ?>

W klasie, metoda tworzy z tego zapytanie
  1. <?php
  2. public function add_row($params, $values, $table) {
  3. $db_query = "INSERT INTO `$table` (";
  4. foreach ($params as $param) {
  5. $db_query .= '`'.$param.'`,';
  6. }
  7. $db_query .= '``) VALUES(';
  8. foreach ($values as $value) {
  9. $db_query .= '''.$value.'',';
  10. }
  11. $db_query .= ''')';
  12. $db_query = str_replace(array(',``',','''), '', $db_query);
  13. echo $db_query;
  14. $this -> query = mysql_query($db_query) or die (mysql_error());
  15.  
  16. return 0;
  17. }
  18. ?>

I wykonuje je, tylko, że jeżeli przekazuję pustą zmieną do tablicy $values to po prostu jest wolne miejsce i wszystko się wysypuje. Jaki macie pomysł na naprawę tego skryptu? Bo ja nie mam żadnego worriedsmiley.gif Wypełnianie NULLami zmiennych chciałbym odstawić, bo chciałbym, żeby skrypt był w miarę uniwersalny.

Ten post edytował Lee 13.07.2007, 17:52:48


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Zastosuj implode" title="Zobacz w manualu PHP" target="_manual

  1. <?php
  2.  
  3. $db_query = "INSERT INTO `$table` (`";
  4. $db_query .= implode( "`, `", $params );
  5. $db_query .= "` VALUES ('";
  6. $db_query .= implode( "', '", $values );
  7. $db_query .= "')";
  8.  
  9. echo $db_query;
  10.  
  11. ?>


Jeśli ilość elementów tablicy $params jest równa ilości elementów tablicy $values to nie powinno jużci tego błędu wyrzucać.


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
Lee
post
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


Dzięki wielkie, działa smile.gif Nie pomyślałem żeby użyć funkcji implode zapomniałem o niej tongue.gif


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
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 Aktualny czas: 22.08.2025 - 11:25