• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP+PDO+mysql

Object Storage Arubacloud
0 głosów
537 wizyt
pytanie zadane 28 czerwca 2015 w PHP przez niezalogowany

Witam.

Mam taki oto kod:

$mysql_host = 'localhost';
$port = '3307';
$username = 'fryzjerka';
$password = 'XXXXXXXXXXXXX';
$database = 'fryzjerka';

try     {
        $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        //---------------------------------


        function wal() 
                {
                $wal_ = "true";
        $squery = 'SELECT data, ip FROM opinie WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"';
        $stmt = $pdo->query( $squery );
        foreach($stmt as $row)
                {
                $ts_x = time();
                $data_sql = $row['data'] + 3300;
                if( $row['ip'] === $_SERVER['REMOTE_ADDR'] && $data_sql >= $ts_x ) $wal_ = "false";
                }
                return $wal_;
                echo "test";
                $stmt->closeCursor();
                }

        echo wal();

        }
catch(PDOException $e)
        {
        echo 'Połączenie nie mogło zostać utworzone.<br />';
        }

//--------------------------------------------------------

Dlaczego nie działa funkcja wal()?

Zaznaczyć warto, że zapytania sql poza funkcją działają, gdy wrzucę zapytanie do funkcji natychmiast przestaje działać

2 odpowiedzi

+1 głos
odpowiedź 28 czerwca 2015 przez Kamilogik Obywatel (1,280 p.)
wybrane 28 czerwca 2015
 
Najlepsza

Zasięg zmiennych. Funkcja nie widzi zmiennej $pdo, więc uruchom ją tak:

wal($pdo) 

a w funkcji zamiast   function wal() daj   function wal($pdo)

komentarz 28 czerwca 2015 przez niezalogowany

no faktycznie. Powiedz jeszcze jak byś na moim miejscu pisał? Czy

try { $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Powinienem dać wewnątrz funkcji (mając na uwadze fakt, że funkcji może być np. 10)?

komentarz 28 czerwca 2015 przez efiku Szeryf (75,160 p.)
edycja 28 czerwca 2015 przez efiku
Nie, nie powinieneś. Do funkcji wystarczy jak będziesz przesyłał obiekt PDO czyli w tym wypadku zmienną $pdo.

Taki przykład:
http://pastebin.com/NYLb4sDD

Ten foreach chyba Ci nie będzie działał bo $stm jest obiektem.
Warunek w foreach też dziwny, bo niepotrzebnie sprawdzasz 2raz IP.
0 głosów
odpowiedź 11 stycznia 2016 przez michal Mądrala (5,560 p.)
Mam pytanko w tym temacie. Czy używając PDO zawsze do ustanowienia połączenia podaje się port=3307, bo widziałem też 3305? Co to w ogóle oznacza i czemu służy ?
komentarz 11 stycznia 2016 przez NXT Obywatel (1,860 p.)

To jest zależne od ustawień serwera. Podawany numer to port, na którym uruchomiony jest MySQL.

Jak stawiasz serwer lokalny, korzystając z xampp, też możesz ustawić mu na jakim porcie ma uruchamiać serwer WWW, na jakim MySQL, a na jakim inne usługi. Wtedy w pliku PHP, w którym nawiązujesz połączenie z bazą musisz podać takie dane, jakie są podane w konfiguracji xampp. Oczywiście w tym wypadku wystarczy port samego MySQL - no chyba, że są przypadki, o których nie wiem :)

O portach radzę poczytać samemu w internecie jeszcze :) https://pl.wikipedia.org/wiki/Port_protoko%C5%82u - takie podstawowe info.

komentarz 12 stycznia 2016 przez michal Mądrala (5,560 p.)
Dzięki za rozjaśnienie sprawy. Pozdrawiam.

Podobne pytania

0 głosów
1 odpowiedź 220 wizyt
pytanie zadane 16 grudnia 2019 w PHP przez Jooky Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 335 wizyt
pytanie zadane 28 czerwca 2015 w PHP przez niezalogowany
0 głosów
1 odpowiedź 342 wizyt
pytanie zadane 15 czerwca 2015 w PHP przez mopatowicz Użytkownik (560 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...