Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mySQL] UPDATE, zamiast nazwy kolmny jej numer
bulimaxiu
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

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


Witam.

Napotkałem w skrypcie potrzebę stworzenia zapytania do bazy mySQL w stylu:
UPDATE `baza` SET $numer_kolumny = '$row[$numer_kolumny]'

Normalnie jest
UPDATE `baza` SET `$nazwa_kolumny` = '$row[$numer_kolumny]'

Czy ktoś może wie czy i jak można stworzyć zapytanie, żeby zawierało numer kolumny w bazie a nie jej nazwę?

Wprawdzie widać niby proste rozwiązania jak np.
  1. nazwać kolumny ich numerami, ale to rozwiązanie ostateczne i nie praktyczne w tym przypadku (nazwy kolumn r1m01c1, r1m01c3, r1m02c1, r1m02c3 itd.)
  2. zrobić array [$numer_kolumny, $nazwa_kolumny] i potem z niej pobierać nazwy.
  3. zrobić funkcję konstrującą nazwę kolumny (tylko po co serwer dociążać).
ale przed którąś z tych opcji chciałbym najpierw dowiedzieć się czy sama baza nie ma metody wprost; oszczędziło by to trochę pamięci i procków serwera.

Analogicznie sprawa dotyczy również
SELECT * FROM bazy_konserwy_GDN WHERE $numer_kolumny = '$ID' LIMIT 1
oraz
SELECT $numer_kolumny_begin $numer_kolumny_end FROM bazy_konserwy_GDN WHERE $numer_kolumny = '$ID' LIMIT 1

Pozdrawiam.
Sebastian

Tymczasowo stworzono funkcję tworzącą nazwę kolumny w oparciu o jej numer, ale jeśli ktoś odpowie, będę wdzięczny.

pozdrawiam.
Sebastian

Ten post edytował bulimaxiu 18.06.2008, 11:08:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
matx132
post
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 19
Dołączył: 12.09.2005

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


jesli tak chcesz to ja to zrobiłem tak:D

i oczywiscie działa:)

  1. <?php
  2. $con = @mysql_pconnect("localhost","root","*****");
  3. @mysql_select_db("baza",$con);
  4. $a=$_GET['a'];
  5. $c=$_GET['c'];
  6. $id=$_GET['id'];
  7. if ($a !='')
  8.  {
  9. $b = $a%2;
  10. if ($b==1)
  11. {
  12.  $d=($a+1)/2;
  13.  mysql_query("UPDATE baza SET r1m0".$d."c1='".$c."' WHERE ID = '".$id."' LIMIT 1 ") ;
  14. }
  15. Else
  16. {
  17. $a=$a/2;
  18.  mysql_query("UPDATE baza SET r1m0".$a."c3='".$c."' WHERE ID = '".$id."' LIMIT 1 " );
  19.  
  20. }
  21.  }
  22. ?>


i wtedy jak podasz
np
http://mojastrona.pl/?a=10&c=5&id=1

wyjdzie takie coś

  1. <?php
  2. UPDATE baza SET r1m05c3='5' WHERE ID = '1' LIMIT 1
  3. ?>


chyba oto chodziło:)?

zdaje mi się ze mój skrypt powinien mieć mniejsze obciążenie serwera niż ten podany wyzej:)
i działa na każda liczbę kolumn:)

Ten post edytował matx132 20.06.2008, 19:55:35
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 26.09.2025 - 07:29