Ovanstående felmeddelande ska man ju få om det är fel på kopplingen till databasen. Jag misstänker att jag får det för att jag kallar funktionen på fel sätt. Just nu ser det ut så här:
$quote = new QuoteSecure();
$quote->quote_smart($email)
Dvs jag skickar inte med någon databaskoppling, likt ->quote_smart($email,$pdh) (där $pdh innehåller min PDO koppling), vilket jag även provat utan resultat. Men i och med att $conn sätts till null i funktionen, borde väl denna inte vara med?
Vidare undrar jag över kodsättet som författaren av funktionsexemplet använder sig av. Har inte stött på det tidigare, jag tänker alltså på användandet av ? tecken, ex:
$value = ($nullify) ? ("NULL") : ("''");
Vad gäller i denna rad? Vad ska jag söka på för att läsa mer om detta sätt att skriva?
När du använder PDO har du möjligheten att använda prepared statements, vilka ger automatiskt skydd mot SQL-injektioner. Med andra ord behöver du inte använda dig av mysql_real_escape_string() eller mysql_escape_string().
<?php
$pdh = new PDO("mysql:host=localhost;dbname=dreas", "dreas", "greken");
$stmt = $pdh->prepare("SELECT namn FROM användare WHERE email=:useremail");
$stmt->bindParam(":useremail", $email);
$stmt->execute();
...
Så du oroar dig i onödan!
Anledningen till att funktionen inte fungerar för dig är dock för att du inte har någon mysql_*-koppling, du använder ju som du säger PDO.
Angående:
$value = ($nullify) ? ("NULL") : ("''");
Det är en enkel if-sats. Om '$nullify' är sann, returnera "NULL" - annars returnera "''".
Den gör precis samma sak som: