Goedendag,
Ben een beginnende PHP'er en heb nog niet veel verstand van PDO.
Ben al een paar dagen bezig om dit werkende te krijgen maar ik blijf vastlopen op 2 punten
Ik krijg de volgende errors: Undefined variable: dbh
nu moet ik toch:

$dbh= new PDO("mysql:host=127.0.0.1;dbname=db_demopool", 'Admin', '1');

ergens boven in script zetten?? Dan maak ik toch deze variabel aan??

en volgende punt waar ik vastloop:

Call to a member function prepare()

Heb deze error gegoogled maar ik kom er effe niet meer uit
Nu moet ik een construct?? aanmaken? waar plaats ik deze en hoe moet ik deze aanmaken?

beide foutmelding zijn voor regel 19:
$sth = $dbh->prepare("SELECT * FROM account WHERE myusername=? AND mypassword=?");

Kan er iemand hier na kijken, en als mogelijk is de juiste manier laten zien. ALs ik kan zien wat ik fout doe en wat de goede manier moet zijn ben ik enorm dankbaar.

<?php
// Start Session because we will save some values to session varaible.
session_start();

// Connection to Database
try {
$dbh= new PDO("mysql:host=127.0.0.1;dbname=db_demopool", 'Admin', '1');
}
catch(PDOException $e)
{
echo $e->getMessage();
}

// Define $myusername and $mypassword
$uname=$_POST['username'];
$pword=$_POST['password'];

// We Will prepare SQL Query
$sth = $dbh->prepare("SELECT * FROM account WHERE myusername=? AND mypassword=?"); //<===== Regel 19

// bind paramenters, Named paramenters alaways start with colon(:)
$sth->bindParam('1', $uname);
$sth->bindParam('2', $pword);

// For Executing prepared statement we will use below function
$sth->execute();

// Count no. of records
$count = $sth->rowCount();

//just fetch. only gets one row. So no foreach loop needed :)
$row = $sth -> fetch();

// User Redirect Conditions will go here
if($count==1)

{
// Save type and other information in Session for future use.
$_SESSION[myusername]=$uname;

// if user type is Admin only then he can access protected page.
if($row[0] == 'Admin') { header( "location:Admin.php"); }
else { header( "location:loginsucces.php"); }

}
else
{
header("location:login.php");
}

?>

Alvast bedankt voor de hulp, zelf snap ik het ff totaal niet meer :P

Brian van der Leeden
Ik heb jouw code gekopieerd en hier lokaal even uitgevoerd maar ik krijg geen errors en wordt netjes naar de login:php gestuurd.

Kijk even goed of het catch() gedeelte in werking treedt. Je kunt dat simpel testen met
<?php
catch(PDOException $e)
{
echo 'FOUTMELDING: ' . $e->getMessage();
}
?>
Bedankt voor de reactie, heb de foutenafhandling erin geplakt, maar krijg echter nog wel dezelfde melding:

FOUTMELDING: SQLSTATE[HY000] [1045] Access denied for user 'Admin'@'localhost' (using password: YES)
( ! ) Notice: Undefined variable: dbh in C:\wamp\www\Demopool\logincheck2.php on line 19
Call Stack
# Time Memory Function Location
1 0.0010 251048 {main}( ) ..\logincheck.php:0

( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\Demopool\logincheck2.php on line 19
Call Stack
# Time Memory Function Location
1 0.0010 251048 {main}( ) ..\logincheck.php:0

Mijn code ziet er nu zo uit:

<?php
// Start Session because we will save some values to session varaible.
session_start();

// Connection to Database
try {
$dbh= new PDO("mysql:host=127.0.0.1;dbname=db_demopool", 'Admin', '1');
}
catch(PDOException $e)
{
echo 'FOUTMELDING: ' . $e->getMessage();
}

// Define $uname and $pword
$uname=$_POST['username'];
$pword=$_POST['password'];

// We Will prepare SQL Query
$sth = $dbh->prepare("SELECT * FROM account WHERE myusername=? AND mypassword=?"); //<===== Regel 19

// bind paramenters, Named paramenters alaways start with colon(:)
$sth->bindParam('1', $uname);
$sth->bindParam('2', $pword);

// For Executing prepared statement we will use below function
$sth->execute();

// Count no. of records
$count = $sth->rowCount();

//just fetch. only gets one row. So no foreach loop needed :)
$row = $sth -> fetch();

// User Redirect Conditions will go here
if($count==1)

{
// Save type and other information in Session for future use.
$_SESSION[myusername]=$uname;

// if user type is Admin only then he can access protected page.
if($row[0] == 'Admin') { header( "location:http://127.0.0.1/phpmyadmin/";); }
else { header( "location:loginsucces.php"); }

}
else
{
header("location:login.php");
}

?>

Kan het zijn dat het aan mijn wamp ligt? heb de nieuwste versie van de wampsite gedownload.
begin bij het begin:

"Access denied for user 'Admin'@'localhost' (using password: YES)"
Bedankt voor je reactie

Ik had een account aangemaakt in me phpmyadmin met naam Admin pass 1. Deze alle rechten gegeven. En ging er toen vanuit dat het zo in orde was, Heb ik iets over het hoofd gezien?

ook ben ik bezig met googlen van de "Access denied for user 'Admin'@'localhost' (using password: YES)"

Mocht je nog tips hebben zijn deze graag welkom
Heb je die Admin ook aan een database gekoppeld?
Anders kan/mag ie niks.
Er is geen verbinding

Kijk hier eens naar: http://php.net/manual/en/pdo.connections.php

Je host is dus: 127.0.0.1
Je databasenaam: db_demopool
Gebruikersnaam: Admin
Wachtwoord: 1

Correct?

Probeer is:
$dbh = new PDO('mysql:host=localhost;dbname=db_demopool', 'Admin', '1');

Probeer ook aan te leren om geen " en ' in 1 query te gebruiken

dus niet zo:

$dbh = new PDO("mysql:host=localhost;dbname=db_demopool", 'Admin', "1");

maar zo:

$dbh = new PDO('mysql:host=localhost;dbname=db_demopool', 'Admin', '1');

of zo:

$dbh = new PDO("mysql:host=localhost;dbname=db_demopool", "Admin", "1");


is het trouwens niet zo bij Wampserver dat je standaard "root" kan gebruiken i.p.v. users aanmaken
Dan zou ik zeggen probeer dit is:

$dbh = new PDO('mysql:host=localhost;dbname=db_demopool', 'root', '');
SUperbedankt voor de ondersteuning. Zat em denk inderdaad in de dubble qoutes en enkele quotes.

Heb:
$dbh= new PDO("mysql:host=127.0.0.1;dbname=db_demopool", 'Admin', '1');

vervangen voor:
$dbh = new PDO('mysql:host=localhost;dbname=db_demopool', 'root', '');

En het werkt gelijk perfect.

NOgmaals bedankt voor de hulp, ben maar een beginneling maar waardeer het enorm.
Ik denk dat het met root te maken heeft.
Ik vermoed dat je Admin geen database hebt toegekend.
Dat moet haast wel, heb het nog is in me database nagekeken en staat echter wel dat admin all priveleges heeft.

Maar ik ben al superblij dat ik nu een verbinding heb kunnen maken doormiddel van de root.ik kan nu gewoon inloggen op me webpagina met de gegevens uit me Account tabel.
Ben nu gelijk verder aan het gaan met het projectje waar mee bezig ben.

De volgende stap is gegevens uit de database halen en weergeven in een tabel.
Heb het zelf nog op de ouderwetse manier staan met mysqli

$prodcut=$_POST['product'];

$result = mysqli_query("SELECT * FROM demopool WHERE product_id='$product'");

echo "<table border='1' color='black' bgcolor='white'>


Dus wordt weer ff lekker googlen :D
Nogmaals bedankt voor de support en ondersteuning.

Brian van der Leeden
Denk aan beveiliging.
Je query is nu lek => SQL-Injection.

Reageren