2013-12-22, 18:31
  #1
Medlem
hej! vill inleda med att förtydliga att jag läst introduktionstråden till PDO men fattar ändå inte. jag håller på att översätta min lilla hemsida från Procedural PHP till PDO, då nästan all support och inspiration på nätet idag behandlar PDO och Inte Procedural PHP&mysqli. samtliga som gett mig råd hittills har sagt att PDO är mycket mer välstrukturerat när man väl lär sig det.

denna kod (något förenklad) fungerar:
[PHP]include 'anslut.php';
$con=mysqli_connect("$host","$user","$pass","$dbna me");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM Tradar");

echo '<table border="1">';
while($row = mysqli_fetch_array($result))
{
echo '<tr><td><a href="visa_trad.php?t=' . $row['Tra_ID'] . '">' . $row['Tra_Namn'] . '</a></td></tr>';
echo '<br>';
}
echo '</table>';

mysqli_close($con);[/PHP]

men mitt försök att översätta detta vääldigt simpla kodstycke misslyckas:
[PHP]include 'anslut.php';

try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass) ;
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

catch(PDOException $e) {
echo $e->getMessage();
}
}

$STH = $DBH->query('SELECT * FROM Tradar');
$STH->setFetchMode(PDO::FETCH_ASSOC);
echo '<table border="1">';
while($row = $STH->fetch()) {
echo '<tr><td><a href="' . $row['Tra_ID'] . '">' . $row['Tra_Namn'] . '</a></td></tr>';
}
echo '</table>';

$DBH = NULL;[/PHP]
Citera
2013-12-22, 19:38
  #2
Medlem
Protons avatar
Citat:
Ursprungligen postat av personkemi2.0
hej! vill inleda med att förtydliga att jag läst introduktionstråden till PDO men fattar ändå inte. jag håller på att översätta min lilla hemsida från Procedural PHP till PDO, då nästan all support och inspiration på nätet idag behandlar PDO och Inte Procedural PHP&mysqli. samtliga som gett mig råd hittills har sagt att PDO är mycket mer välstrukturerat när man väl lär sig det.

denna kod (något förenklad) fungerar:
[PHP]include 'anslut.php';
$con=mysqli_connect("$host","$user","$pass","$dbna me");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM Tradar");

echo '<table border="1">';
while($row = mysqli_fetch_array($result))
{
echo '<tr><td><a href="visa_trad.php?t=' . $row['Tra_ID'] . '">' . $row['Tra_Namn'] . '</a></td></tr>';
echo '<br>';
}
echo '</table>';

mysqli_close($con);[/PHP]

men mitt försök att översätta detta vääldigt simpla kodstycke misslyckas:
[PHP]include 'anslut.php';

try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass) ;
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

catch(PDOException $e) {
echo $e->getMessage();
}
}

$STH = $DBH->query('SELECT * FROM Tradar');
$STH->setFetchMode(PDO::FETCH_ASSOC);
echo '<table border="1">';
while($row = $STH->fetch()) {
echo '<tr><td><a href="' . $row['Tra_ID'] . '">' . $row['Tra_Namn'] . '</a></td></tr>';
}
echo '</table>';

$DBH = NULL;[/PHP]
Ditt try-Catch-block ser ju aningen snett ut, normalt sett så kör man try runt allt som kan komma att kasta ett undantag, för att sedan hantera det eventuella undantaget i Catch-blocket, men du har tjoffat ihop allt i en salig röra i din anslutning. Vad händer om du börjar med att fixa till det?

[PHP]include 'anslut.php';

try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass) ;
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}//slut try
catch(PDOException $e) {
echo $e->getMessage();

}

[/PHP] Ser du skillnaden mot din kod och gör det nån skillnad?

Läsning om undantagshantering i php:
http://php.net/exceptions
Citera
2013-12-22, 20:01
  #3
Medlem
skillnaden är att den fungerar! tack!! (mao du kan stänga denna tråd om du vill)

jag döpte denna tråd till #1 med avsikten att det ska komma en uppsjö av liknande trådar där jag ur en nybörjares perspektiv försöker översätta procedural till pdo... ok då har vi anslutit till databasen och utfört en simpel select-sats
Citera
2013-12-22, 21:19
  #4
Medlem
Värt att notera att koden ovan fortfarande är procedurell.
Citera
2013-12-22, 21:33
  #5
Medlem
ok tack för infon! hur hade du översatt den då? antar att det inte är jättemycket besvär (som jag fattade det gör man bara classer när man använder INSERT OCH UPDATE)
__________________
Senast redigerad av personkemi2.0 2013-12-22 kl. 21:36.
Citera
2013-12-25, 15:26
  #6
Medlem
Protons avatar
Citat:
Ursprungligen postat av 901an
Värt att notera att koden ovan fortfarande är procedurell.
Hur får du det där till procedurell programmering när du instansierar ett objekt för att sedan använda dess metoder?
Citera
2013-12-25, 17:44
  #7
Medlem
Turbotores avatar
Vissa anser att OOP måste vara klasser verkar det som
Citera
2013-12-25, 20:02
  #8
Medlem
Protons avatar
Citat:
Ursprungligen postat av Turbotore
Vissa anser att OOP måste vara klasser verkar det som
Va?

PDO ÄR ju en klass, som du skapar ett PDO-objekt av.
Citera
2013-12-25, 20:15
  #9
Medlem
Turbotores avatar
Jag menar det med men utan $this->bullshit->fjanteri verkar vissa tror att det ej är oop
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in