Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sterownik do mysql
Forum PHP.pl > Forum > PHP
shpyo
Od jakiegoś cazsu korzystam z mojego sterownika do bazy danych mysql. Nie jest on może idealny, i jak narazie spełnia moje oczewikawania.
Z projektu na projekt okazuje się, że w pewnych momentach nie działa to tak jak bym sobie tego życzył.
KOD:
  1. <?php
  2. class mysql
  3. {
  4.  
  5.  function error( $error, $query ) {
  6. echo '<b>mySQL error:</b> '.$error.'. <br />zapytanie: '.$query;
  7. die();
  8.  }
  9.  
  10.  function zapytanie ( $query ) {
  11. $resultDB = @mysql_query( $query ) or $this->error( mysql_error(), $query );
  12.  
  13. $arrDane = array();
  14. while( $rowDB = @mysql_fetch_array( $resultDB, MYSQL_ASSOC ) ) {
  15.  array_push( $arrDane, $rowDB );
  16. }
  17.  
  18. return $arrDane;
  19.  }
  20.  
  21.  function dodaj( $co, $gdzie ) {
  22. $pola = '';
  23. $kolumny = '';
  24. $licznik = 0;
  25. $ilePol = count($co);
  26.  
  27. foreach( $co as $klucz => $index ) {
  28.  $licznik++;
  29.  if( $licznik == $ilePol ) {
  30. $kolumny .= $klucz;
  31. $pola .= "'".$index."'";
  32.  } else {
  33. $kolumny .= $klucz.", ";
  34. $pola .= "'".$index."', ";
  35.  }
  36. }
  37.  
  38. $query = "INSERT INTO ".$gdzie." (".$kolumny.") VALUES(".$pola.")";
  39. $this->zapytanie($query);
  40.  }
  41.  
  42.  function edycja( $co, $tabela, $gdzie ) {
  43. $pola = '';
  44. $licznik = 0;
  45. $ilePol = count($co);
  46.  
  47. foreach( $gdzie as $klucz => $index ) {
  48.  $warunek = $klucz.' = '.$index;
  49. }
  50.  
  51. foreach( $co as $klucz => $index ) {
  52.  $licznik++;
  53.  if( $licznik == $ilePol )
  54. $pola .= $klucz." = '".$index."'";
  55.  else
  56. $pola .= $klucz." = '".$index."', ";
  57. }
  58.  
  59. $query = "UPDATE ".$tabela." SET ".$pola." WHERE ".$warunek;
  60. $this->zapytanie($query);
  61.  }
  62.  
  63.  function usun( $co, $gdzie ) {
  64. foreach( $co as $klucz => $index ) {
  65.  $warunek = $klucz.' = '.$index;
  66. }
  67.  
  68. $query = " DELETE FROM ".$gdzie." WHERE ".$warunek;
  69. $this->zapytanie($query);
  70.  }
  71.  
  72. }
  73. ?>

Problem leży w metodzie do edycji danych. Czasami jest tak, że chcę edytować dane poprzez zwiększenia jednego pola o jakąś liczbę - czyli:
  1. UPDATE tabela SET punkty=punkty+5 WHERE id=666

Czyli u mnie powinno być tak:
  1. <?php
  2. $arr = array();
  3. $arr['punkty'] = 'punkty+5';
  4. ?>

Niestety wywala parse error :/
Podobnie jest z metodą usun gdy jakaś tabela nie ma pola autoincrement.
Czy ma ktoś jakiś pomysł aby rozwiązać mój problem bez dodadatkowych warunków w metodach?
nospor
  1. <?php
  2. $pola .= $klucz." = '".$index."'";
  3. ?>

Niezaleznie od typu pola bierzerz go w ciapki. Błąd exclamation.gif!. W rezultacie otrzymasz
  1. ....punkty='punkty + 5'...
źle
shpyo
@nospor: Ciapki muszą być, gdy nową wartością pola jest string
nospor
od kiedy punkty to string? przeciez sam zwiekszasz je o 5 czyli jest to liczba. Nie moze tam byc ciapkow. Przy innych polach tekstowych ciapki musza byc, ale przy liczbach nie, tym bardziej ze podajesz nazwe pola. a w ciapkach jest ona traktowana jako napis a nie jako pole
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.