Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Konkatenacja - problemy
dolar
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


Stworzylam sobie taka klase, ktora bedzie obslugiwac mi bazy danych. I podczas tworzenia ostataniej metody insert napotkalam problem. Nie wiem jak powinnam polaczyc te wszystkie zmienne i polecenia. W ogole mam problem z kontatenacja ostatnio ehh. Oto kod:
  1. class Tabela
  2. {
  3.  
  4. private $nazwa;
  5. private $limit = 1;
  6.  
  7.  
  8. function __construct(String $nazwa)
  9. {
  10. $this->nazwa = $nazwa;
  11. }
  12.  
  13. function limit(int $ile)
  14. {
  15. $this->limit = $ile;
  16. }
  17.  
  18. function select(array $kolumny = array('*'))
  19. {
  20.  
  21. $zapytanie = "SELECT " . join(',', $kolumny) . " FROM $this->nazwa LIMIT $this->limit";
  22. $db = Db::getInstance();
  23. $wynik = mysqli_query($db, $zapytanie);
  24. return $wynik->fetch_all(MYSQLI_ASSOC);
  25.  
  26. }
  27.  
  28.  
  29. function where(string $kolumna, $cos)
  30. {
  31. $zapytanie = "SELECT * FROM $this->nazwa WHERE $kolumna='$cos'";
  32. $db = Db::getInstance();
  33. $wynik = mysqli_query($db, $zapytanie);
  34. return $wynik->fetch_all(MYSQLI_ASSOC);
  35. }
  36.  
  37. function showKolumns()
  38. {
  39. $zapytanie = "SHOW COLUMNS FROM $this->nazwa";
  40. var_dump($zapytanie);
  41. $db = Db::getInstance();
  42. $wynik = mysqli_query($db, $zapytanie);
  43. return $wynik->fetch_all(MYSQLI_ASSOC);
  44. }
  45.  
  46. function insert (array $kolumny, array $wartosc){
  47. [b] $zapytanie="INSERT INTO $this->nazwa ".join(',', $kolumny) ." VALUES '. join(',', $wartosc) .'";[/b] -> tu nie zwraca mi prawidlowego zapytania.
  48. Powinno to wygladac na przyklad tak: "INSERT INTO `oceny`(`id`, `imie`, `przedmiot`, `ocena`) VALUES ('23', 'Ania', 'matematyka', '5')".
  49. var_dump($zapytanie);
  50. $db = Db::getInstance();
  51. $wynik = mysqli_query($db, $zapytanie);
  52. return $wynik->fetch_all(MYSQLI_ASSOC);
  53. }



Czy sa jakies zlote zasady konkatenacji?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Już to kilka razy wcześniej pisałem że cała ta klasa jest do niczego. Zapewne nie escapujesz wprowadzanych danych. Jak zapiszesz zapytanie insert into .... select...?
Go to the top of the page
+Quote Post
dolar
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


Cytat(viking @ 13.01.2017, 12:57:10 ) *
Już to kilka razy wcześniej pisałem że cała ta klasa jest do niczego. Zapewne nie escapujesz wprowadzanych danych. Jak zapiszesz zapytanie insert into .... select...?


Zdaje sobie sprawe ze nie jest to idealna klasa, ale to tylko moje cwiczenia, nie bede tego uzywac w zadnych projektach itp... na czyms musze sie uczyc.


Zmienialm ten kod na bardzije uniwersalny, czy teraz jest lepszy wydajnosciowo? (IMG:style_emoticons/default/tongue.gif)

  1. <?php
  2. include '../db.php';
  3.  
  4. class Tabela
  5. {
  6.  
  7. private $nazwa;
  8. private $limit = null;
  9. private $where = null;
  10. private $order = null;
  11.  
  12.  
  13. function __construct(String $nazwa)
  14. {
  15. $this->nazwa = $nazwa;
  16. }
  17.  
  18.  
  19. function showKolumns()
  20. {
  21. $zapytanie = "SHOW COLUMNS FROM $this->nazwa";
  22. $db = Db::getInstance();
  23. $wynik = mysqli_query($db, $zapytanie);
  24. return $wynik->fetch_all(MYSQLI_ASSOC);
  25. }
  26.  
  27. function limit(int $ile)
  28. {
  29. $this->limit = $ile;
  30. }
  31.  
  32. function where(string $kolumna, $cos)
  33. {
  34.  
  35. $this->where = "$kolumna='$cos'";
  36.  
  37. }
  38.  
  39. function order(string $kolumna, string $order)
  40. {
  41. $this->order = "$kolumna $order";
  42. }
  43.  
  44. function select(array $kolumny = array('*'))
  45. {
  46. if ($this->limit != null) {
  47. $limit = "LIMIT $this->limit";
  48. } else {
  49. $limit = null;
  50. }
  51.  
  52. if ($this->where != null) {
  53. $where = "WHERE $this->where";
  54. } else {
  55. $where = null;
  56. }
  57.  
  58. if ($this->order != null) {
  59. $order = "ORDER BY $this->order";
  60. } else {
  61. $order = null;
  62. }
  63.  
  64. $zapytanie = "SELECT " . join(',', $kolumny) . " FROM $this->nazwa " . $where . " " . $order . " " . $limit . "";
  65. $db = Db::getInstance();
  66. $wynik = mysqli_query($db, $zapytanie);
  67. return $wynik->fetch_all(MYSQLI_ASSOC);
  68.  
  69. }
  70.  
  71.  
  72. function insert(array $kolumny, array $wartosc)
  73. {
  74. $kol = join(', ', $kolumny);
  75. $war = "'" . join("','", $wartosc) . "'";
  76. $zapytanie = "INSERT INTO `$this->nazwa` ($kol) VALUES ($war)";
  77. var_dump($zapytanie);
  78. $db = Db::getInstance();
  79. $wynik = mysqli_query($db, $zapytanie);
  80. return $wynik;
  81.  
  82. }
  83.  
  84. }
  85.  
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: 8.10.2025 - 19:45