Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Povezivanje sa MySql bazom preko PDO

[es] :: PHP :: PHP za početnike :: Povezivanje sa MySql bazom preko PDO

[ Pregleda: 2803 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Prekognisticar
savetnik kapetana na Enterprajzu
JuEsEs Enterprajz
Beograd, Srbija

Član broj: 322491
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Povezivanje sa MySql bazom preko PDO29.07.2014. u 20:06 - pre 118 meseci
Gde sam pogresio?
Program nece da mi cita podatke iz baze
U MySql bazi su podaci u obliku:
- Ime
- Prezime
- E-mail

Kada preko forme odaberem ime (jedno od dva ponudjena) program bi trebao da izbaci e-mail osobe.
Pretpostavlajm da je problem sa metodom fetch(), tj da je nisam ispravno upotrebio.
Inace ovo je iz knjige "PHP for absolute beginners" iz 2009. jedan od osnovnih primera konektovanja na bazu preko PDO.
Pre par godina naucio sam osnove povezivanja preko mysql() i mysqli() ali sam zbog drugih stvari batalio. Sada bih hteo da se vratim u materiju i krenem profesionalno da se bavim. Vidim da je PHP napredovao i sve mi se ovo OOP cini neverovatno konfuznim. Zato sam uzeo knjige da probam od pocetka.
Svaki savet je dobrodosao

Code:
<?php
    if($_SERVER['REQUEST_METHOD']=='POST')
        {
         // Open a MySQL connection
         $dbinfo = 'mysql:host=localhost;dbname=Galileo15Feb01';
         $user = 'root';
         $pass = '';
         $link = new PDO($dbinfo, $user, $pass);

         // Create and execute a MySQL query
         $sql = "SELECT email FROM email_list WHERE first_name=?";
         $stmt = $link->prepare($sql);

         if($stmt->execute(array($_POST['nejm'])))
            { echo "inside if";
             while($row = $stmt->fetch()) {
                echo "inside while";
                printf("mejl: %s<br />", $row['email']);
              }
             $stmt->closeCursor();
            }
        }
        else {
?>
<form method="post">
    <label for="nejm">Select first name:</label>
    <select name="nejm">
        <option value="1">Stojan</option>
        <option value="2">Djovak</option>
    </select>

    <input type="submit" />
</form>


<?php } // End else ?>


Izbacuje poruku "inside if". Ne stampa "inside while"!

Nema 'leba bez motike
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
89.216.28.*



+44 Profil

icon Re: Povezivanje sa MySql bazom preko PDO30.07.2014. u 08:54 - pre 118 meseci
Probaj ovako:
Code:

       $stmt  = $db->prepare("SELECT email FROM email_list WHERE first_name=:name ");
       $stmt->bindValue(':name', $_POST['nejm'], PDO::PARAM_STR); 
       $result = $stmt->execute();


Testiraj da li se uopšte konektuješ na bazu:

Code:

try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

(izmeni parametre koji su potrebni za tvoje podatke iz baze)
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Prekognisticar
savetnik kapetana na Enterprajzu
JuEsEs Enterprajz
Beograd, Srbija

Član broj: 322491
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Re: Povezivanje sa MySql bazom preko PDO30.07.2014. u 16:21 - pre 118 meseci
Drugi deo mi je pomogao. Uspesno se konektovao i izlistao podatke.

Medjutim, prvi deo nisam siguran da razumem. Pokusao sam na nekoliko nacina da ubacim u svoj kod ali mi je izbacio poruku "internal server error".

npr
Code:

    if($_SERVER['REQUEST_METHOD']=='POST')
        {
         // Open a MySQL connection
         $dbinfo = 'mysql:host=localhost;dbname=Galileo15Feb01';
         $user = 'root';
         $pass = '';
         $link = new PDO($dbinfo, $user, $pass);

         // Create and execute a MySQL query
         //$sql = "SELECT email FROM email_list WHERE first_name=?";
         $stmt = $link->prepare("SELECT email FROM email_list WHERE first_name=:name ");
         $stmt->bindValue(':name', $_POST['nejm'], PDO::PARAM_STR);
         $result = $stmt->execute();

         if($result)
            { echo "inside if";
             while($row = $stmt->fetch() {

                echo "inside while";
                printf("mejl: %s<br />", $row['email']);
              }
             $stmt->closeCursor();
            }
        }
        else { echo "inside else";



Nema 'leba bez motike
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Povezivanje sa MySql bazom preko PDO02.08.2014. u 15:04 - pre 118 meseci
Nisi zatvorio tag posle else (možda si izostavio prilikom pisanja koda ovde):

Code:
else { echo "inside else";


treba da bude:
Code:
else { echo "inside else"; }


I za svaki slučaj zameni:
Code:
while($row = $stmt->fetch() {


sa

Code:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {


Ukoliko ti ne treba više ovaj upit izbaci sledeće:
Code:
$stmt->closeCursor();

I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Prekognisticar
savetnik kapetana na Enterprajzu
JuEsEs Enterprajz
Beograd, Srbija

Član broj: 322491
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Re: Povezivanje sa MySql bazom preko PDO05.08.2014. u 00:14 - pre 118 meseci
D, izostavio sam nepotreban kod, pa izgleda kao da je nezatvorena zagrada ...
Celokupan kod, modifikovan prema uputstvu:
Code:

<?php
if($_SERVER['REQUEST_METHOD']=='POST')
       {
    // Open a MySQL connection
    $dbinfo = 'mysql:host=localhost;dbname=Galileo15Feb01';
    $user = 'root';
    $pass = '';
    $link = new PDO($dbinfo, $user, $pass);

    // Create and execute a MySQL query
    
    $stmt = $link->prepare("SELECT email FROM email_list WHERE first_name=:name");
    
    $stmt->bindValue(':name', $_POST['nejm'], PDO::PARAM_STR);    

           echo "outside if";    

    if($stmt->execute(array($_POST['nejm'])))
        {
                       echo "inside if";
         while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                 echo "inside while";
             printf("Email: %s<br />", $row['email']);
            }
        $stmt->closeCursor();
        }
    }
     else {
                     echo "inside else";
    ?>
<form method="post">
    <label for="nejm">Select first name:</label>
    <select name="nejm">
        <option value="1">Stojan</option>
        <option value="2">Djovak</option>
    </select>

    <input type="submit" />
</form>
<?php } // End else ?>


Ovo izbacuje poruku "outside if"

Ako unutar if-a izbacim "array($_POST['nejm'])" tj napisem samo "if($stmt->execute())" prolazi if i na pomenutu poruku (outside if) dopisuje "inside if".
Medjutim ne printuje bazu!
Nema 'leba bez motike
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: Povezivanje sa MySql bazom preko PDO05.08.2014. u 00:16 - pre 118 meseci
"nejm" - svaka cast za originalnost :)
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Povezivanje sa MySql bazom preko PDO

[ Pregleda: 2803 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.