这个代码与PDO好(PHP)?

时间:2014-03-19 16:13:36

标签: php mysql pdo

我是PHP的新手,在学习了语言的基础知识之后,我已经学习了一些关于PDO的教程,我只是想知道我的代码是否正确以及你们的建议是什么?我可以改为让它更安全,更快,更有效,你可以命名......

我已经通过大量的教程来实现这一结果,因此我认为我不会问你们,因为不是每个关于PHP的网上教程(有这么多)都是学习最佳实践的可靠来源。写好的代码。

这是我的代码。它只插入字符串'比尔盖茨'到数据库,称为“pdotest',table' tableOne'并排第一行'。我已经使用了持久性数据库连接,因为它可以使Web应用程序更快。我相信你们可以告诉我如何正确使用这个持久连接的东西,我可能还没有完全理解如何在我的代码中使用它。

<?php

// DB connect configuration
$user = 'user';
$pass = 'password';

// Database connection
try {
    $conn = new PDO('mysql:host=localhost;dbname=pdotest', $user, $pass, array(
        PDO::ATTR_PERSISTENT => true
    ));
}
catch(PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    $conn = null;
    die();
}

// Data to insert (Bill Gates = Hero #1)
$data = 'Bill Gates';

try {
    // The insert query
    $sql = "INSERT INTO tableone (rowOne) VALUES (:rowOne)";
    $q = $conn->prepare($sql);
    $q->execute(array(':rowOne'=>$data));   

    // Example INSERT query with multiple VALUES
    // $q->execute(array(':rowOne'=>$data, ':rowTwo'=>$dataTwo));   
}
catch(PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    $conn = null;
    die();
}

?> 

1 个答案:

答案 0 :(得分:1)

这显然效率低下,因为你的PHP必须运行两次以上的代码 以下代码就足够了

 <?php

// DB connect configuration
$user = 'user';
$pass = 'password';
// Database connection
$dsn = "mysql:host=localhost;dbname=pdotest;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$conn = new PDO($dsn, $user, $pass, $opt);

$data = 'Bill Gates';

$sql = "INSERT INTO tableone (rowOne) VALUES (?)";
$q = $conn->prepare($sql);
$q->execute(array($data));   

一些亮点

  • 只有在您确实知道自己在做什么时才使用持久连接
  • 如果您期待例外,则设置例外模式
  • 不要抓住他们只会死。 PHP可以自行消亡。