2012-06-20 25 views
10

Bir sorguyu yürütmek ve hataları işlemek için en iyi uygulamaları içeren bir PHP PDO tam çalışma örneği arıyorum. Şimdiye kadar sahip olduğum şeyler.Aptallar için PHP PDO

BAĞLANTI. Bu şekilde yapmazsanız, bir bağlantı hatası varsayılan olarak DB kimlik bilgilerini sitenizin tüm kullanıcılarına gösterecektir. Ancak

$stmt = $dbh->prepare("INSERT INTO sets"); 
$stmt->execute() 
    or error(0, "USERS ERROR ".__LINE__." ".print_r($dbh->errorInfo(),true)); 
$setID = $dbh->lastInsertID(); 
$stmt->closeCursor(); 

$stmt = $dbh->prepare("INSERT INTO words (language, name, detail, user, type, set) VALUES (?, ?, ?, ?, ?, ?)"); 
$stmt->execute(array($l1l, $l1w, $l1d, $userID, 'training', $setID)) 
    or error(0, "USERS ERROR ".__LINE__." ".print_r($dbh->errorInfo(),true)); 
$stmt->closeCursor(); 

sorgulama

try { 
    $dbh = new PDO("mysql:host=localhost;dbname=phor_lang", "phor_lang", "'9lsnthsn9"); 
} catch (PDOException $e) { 
    error(false, "PDO ERROR: " . $e->getMessage()); 
} 

, bu başarısız sorgular sonuçlandığını (yanlış döner yürütmek) ve hata iletisi boştur.

cevap

14

Here 'ın PDO modern hakeminin kılavuzuna yapılandırmak yapmak gerekir. Bazı sorularınızı yanıtlıyor ve diğer birçok temel PDO işlevselliğini açıklıyor.

Sadece bunu okudum ve mükemmel bir kaynak buldum! insanların% 70 için, sadece orada basit PDO sarmalayıcı sınıf istedikleri

try { 
    $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 
+3

yeni öğrendim:

İşte hataları 'başlığı altında bir alıntı. PDO, istisnalar ve her şeyden fazlasıyla üretilmiştir, çünkü doğrudan onu kullanmamanız gerekiyor ... DB sınıfınızda tüm bu döküntüleri saklamanız gerekiyor. –

3

Varsayılan olarak, pdo hatalar üzerinde istisnalar atmaz.

Eğer

$dbh = new PDO("...", "...", "...", array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
)); 

// or 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);