Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MySQLi i inna klasa
frydry
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 2.04.2015

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


Witam.
Od niedawna zacząłem korzystać z biblioteki MySQLi i mam drobny problem.
Otóż przy tworzeniu instancji klasy MySQLi w pliku konfiguracyjnym php i zainkludowaniu go do index.php nie mam problemu, żeby wykonywać zapytania wykorzystując zmienną do której przypisałem klasę. Jednak problem jest, gdy chcę wykonać zapytanie w metodzie innej klasy. Muszę wtedy wykonywac połączenie do bazy danych drugi raz, a jest to dość uciążliwe i kiepskie rozwiązanie.
Jaka jest na to rada albo najlepsze rozwiązanie?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Najgorsze: GLOBAL - manual -> zasieg zmiennych
Ciut lepsze: SINGLETON -> google
Najlepsze: Dependency Injection -> google
Go to the top of the page
+Quote Post
frydry
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 2.04.2015

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


ten global manual nie działa, albo znalazłem nie to co trzeba.

Natomiast tego Dependency Injection nie rozumiem. To znaczy tyle co się dowiedziałem o tym to nie ma sensu stosowanie tego przy moim problemie, bo w sumie wyjdzie na to samo. Chyba, że znalazłem tylko jakieś podstawy na ten temat. :/

Chodzi mi poprostu o to żebym mógł w swojej metodzie klasy wykonać zapytanie przez mysqli:
  1. //plik config.php
  2. $mysqli = new MySQLi('host', 'user', 'pass', 'db');
  3.  
  4. // plik z klasą
  5. class Klasa {
  6. function Funkcja($zmienna) {
  7. $mysqli->query("INSERT INTO tabela (kolumna) VALUES ('$zmienna'));
  8. }
  9. }

Jakbyś mógł mi pokazać jakiś prosty sposób ;-;
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




global dziala. Jak ci nie dziala znaczy ze zle uzywasz.
I nie DI ma u ciebie jak najbardziej zastosowanie. Widac znowu zle do tego podchodzisz. Poczytaj troche dluzej o tym
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


DI w skrócie:

  1. <?php
  2.  
  3. //plik config.php
  4. $mysqli = new MySQLi('host', 'user', 'pass', 'db');
  5.  
  6. // plik z klasą
  7. class Klasa
  8. {
  9. protected $connection = null;
  10.  
  11. public function __construct($connction)
  12. {
  13. $this->connection = $connction;
  14. }
  15.  
  16. public function query($zmienna) {
  17. $this->connection->query("INSERT INTO tabela (kolumna) VALUES ('$zmienna')");
  18. }
  19. }
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@Pyton a gdzie tu skrot? Wlasnie koledze zreferowales cale DI (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
frydry
post
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 2.04.2015

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


Cytat(Pyton_000 @ 25.11.2015, 17:54:05 ) *
DI w skrócie:

  1. <?php
  2.  
  3. //plik config.php
  4. $mysqli = new MySQLi('host', 'user', 'pass', 'db');
  5.  
  6. // plik z klasą
  7. class Klasa
  8. {
  9. protected $connection = null;
  10.  
  11. public function __construct($connction)
  12. {
  13. $this->connection = $connction;
  14. }
  15.  
  16. public function query($zmienna) {
  17. $this->connection->query("INSERT INTO tabela (kolumna) VALUES ('$zmienna')");
  18. }
  19. }


Takie coś to sa wykombinowałem, tylko że to nie działa.... -,-
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




To pokaz dokladnie jak to zrobiles, bo pewnie zrobiles to zle.
I nie pisz "nie dziala" tylko napisz DOKLADNIE na czym polega nie dzialanie

Przenosze
Go to the top of the page
+Quote Post
frydry
post
Post #9





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 2.04.2015

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


Działa.
Wstawiłem:
  1. $Register = new Account(new mysqli('host', 'user', 'pass', 'db'));

zamiast
  1. $Register = new Account($mysqli);

z sql_config.php
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


a CO nie działa?
Go to the top of the page
+Quote Post

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: 9.10.2025 - 02:30