Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL][PostgreSQL] pg_fetch_field ?
jigsaw
post 25.07.2010, 21:18:51
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.01.2007

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


Przerabiam bazę danych MySQL na PostgreSQL, mam następującą funkcję w PHP obsługującą bazę MySQL:

  1. function _mysql_fetch_array($result)
  2. {
  3. $table_result=array();
  4. $r=0;
  5. while($row = mysql_fetch_assoc($result)){
  6. $arr_row=array();
  7. $c=0;
  8. while ($c < mysql_num_fields($result)) {
  9. $col = mysql_fetch_field($result, $c);
  10. $arr_row[$col -> name] = $row[$col -> name];
  11. $c++;
  12. }
  13. $table_result[$r] = $arr_row;
  14. $r++;
  15. }
  16. return $table_result;
  17. }


która musi działać analogicznie na bazie PostgreSQL:

  1. function _pg_fetch_array($result)
  2. {
  3. $table_result=array();
  4. $r=0;
  5. while($row = pg_fetch_assoc($result)){
  6. $arr_row=array();
  7. $c=0;
  8. while ($c < pg_num_fields($result)) {
  9. $col = pg_fetch_field($result, $c);
  10. $arr_row[$col -> name] = $row[$col -> name];
  11. $c++;
  12. }
  13. $table_result[$r] = $arr_row;
  14. $r++;
  15. }
  16. return $table_result;
  17. }


niestety w PHP nie ma funkcji pg_fetch_field. W jaki sposób można rozwiązać jej brak? Funkcja _pg_fetch_array($result) musi zwracać tablicę o identycznej strukturze jak funkcja _mysql_fetch_array($result)
Go to the top of the page
+Quote Post
everth
post 25.07.2010, 21:21:53
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Może czas pomyśleć o PDO? Skoro teraz już masz klocki z funkcjami to co będzie jak projekt się rozrośnie?


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
jigsaw
post 25.07.2010, 21:37:50
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.01.2007

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


czas smile.gif ale powyższą sprawę muszę jakoś rozwiązać...
Go to the top of the page
+Quote Post
everth
post 25.07.2010, 21:51:28
Post #4





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Hmm a co ci jest potrzebne z pól tego fetch_field? Może stworzysz jaką prostą klasę implementującą niektóre pola obiektu wynikowego mysql_fetch_field i napiszesz funkcję pg_fetch_field implementującą niektóre właściwości mysql_fetch_field za funkcji pq_*. Trochę to przekombinowane a pewnych pól i tak nie uzyskasz, ale skoro nie możesz użyć PDO to jedyne co przychodzi mi do głowy.

EDIT: Tak sobie jeszcze pomyślałem że gdyby była możliwość przeciążania funkcji wbudowanych w PHP to można by napisać funkcje implementujące starą bazę danych za pomocą PDO (taka warstwa wstecznej zgodności), ale niestety to raczej nie wchodzi w grę :/.

Ten post edytował everth 25.07.2010, 21:55:26


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
jigsaw
post 25.07.2010, 21:55:07
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.01.2007

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


  1. function _pg_fetch_array($result)
  2. {
  3. $table_result=array();
  4. $r=0;
  5. while($row = pg_fetch_assoc($result)){
  6. $arr_row=array();
  7. $c=0;
  8. while ($c < pg_num_fields($result)) {
  9. [b]$col = pg_field_name($result, $c);[/b]
  10. $arr_row[$col] = $row[$col];
  11. $c++;
  12. }
  13. $table_result[$r] = $arr_row;
  14. $r++;
  15. }
  16. return $table_result;
  17. }


rozwiązane smile.gif nie doczytałem manuala dokładnie winksmiley.jpg
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 - 01:57