PHP PDO for Dummies

Wil*_*ken 10 php mysql sql pdo

我正在寻找一个PHP PDO完整的工作示例,其中包含运行查询和处理错误的最佳实践.这是我到目前为止所拥有的.

正在连接.如果不这样做,则默认情况下,连接失败会将DB凭据公开给站点的所有用户.

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

用查询

$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();
Run Code Online (Sandbox Code Playgroud)

但是,这会导致查询失败(执行返回false)并且错误消息为空.

Dea*_*her 15

是PDO的现代入门指南.它回答了您的一些问题,并解释了许多其他基本的PDO功能.

我昨天刚读过它,发现它是一个很好的资源!

这是'错误'下的引用:

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚发现,对于70%的人来说,你只需要最简单的PDO包装类.PDO过度设计了异常和所有内容,因为你不应该直接使用它......你应该在数据库类中隐藏所有这些废话. (4认同)