• PDO:插入示例


    这是关于如何使用 PHP 的 PDO 对象将行插入 MySQL 数据库的初学者教程。请注意,我还写了一篇关于如何使用 PDO 进行多插入的教程。但是,对于本教程,我将坚持基础知识。

    示例 MySQL 表:

    1. CREATE TABLE IF NOT EXISTS `cars` (
    2. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3. `make` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
    4. `model` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
    5. PRIMARY KEY (`id`)
    6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

    出于本示例的目的,我创建了一个名为cars的简单表。如果您打算使用 PDO 扩展,请务必将上述 SQL 导入您自己的数据库。

    PDO 插入示例。

    首先,我们需要使用 PDO 对象连接到 MySQL

    1. //MySQL connection details.
    2. $host = 'localhost';
    3. $user = 'root';
    4. $pass = '';
    5. $database = 'test';
    6. //Custom PDO options.
    7. $options = array(
    8. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    9. PDO::ATTR_EMULATE_PREPARES => false
    10. );
    11. //Connect to MySQL and instantiate our PDO object.
    12. $pdo = new PDO("mysql:host=$host;dbname=$database", $user, $pass, $options);

    一旦我们连接到 MySQL 并选择了我们的数据库,我们就可以执行一个准备好的插入语句:

    1. //Create our INSERT SQL query.
    2. $sql = "INSERT INTO `cars` (`make`, `model`) VALUES (:make, :model)";
    3. //Prepare our statement.
    4. $statement = $pdo->prepare($sql);
    5. //Bind our values to our parameters (we called them :make and :model).
    6. $statement->bindValue(':make', 'Nissan');
    7. $statement->bindValue(':model', 'Primera');
    8. //Execute the statement and insert our values.
    9. $inserted = $statement->execute();
    10. //Because PDOStatement::execute returns a TRUE or FALSE value,
    11. //we can easily check to see if our insert was successful.
    12. if($inserted){
    13. echo 'Row inserted!
      ';
    14. }

    使用 PDO 对象向 MySQL 中插入一行的过程实际上非常简单:

    1. 我们创建了 INSERT SQL 语句。请注意我们如何创建“占位符”,例如:make:model。稍后,这些占位符将允许我们将数据“绑定”到语句。请记住,在准备好的语句中,与 MySQL 服务器进行了两轮通信。首先,我们通过“准备”告诉 MySQL 我们语句的结构。然后,我们通过“绑定”我们的数据并执行语句来发送数据。
    2. 我们准备了我们的声明。
    3. 我们将要插入的数据绑定到语句中。
    4. 之后,我们执行语句(从而执行 SQL 查询)。
    5. 最后,我们检查了PDOStatement::execute的结果是否为布尔 TRUE 值。如果为TRUE,则表示新行插入成功。如果它为 FALSE,则意味着 MySQL 无法插入该行。在这种情况下,您很可能会遇到 PDOException 错误。

    使用 PDO 插入多行。

    请注意,您可以重复使用相同的语句来插入多行

    1. //Create our SQL query.
    2. $sql = "INSERT INTO `cars` (`make`, `model`) VALUES (:make, :model)";
    3. //Prepare our statement using the SQL query.
    4. $statement = $pdo->prepare($sql);
    5. //Bind our values to our parameters (we called them :make and :model).
    6. $statement->bindValue(':make', 'Nissan');
    7. $statement->bindValue(':model', 'Primera');
    8. //Execute the statement and insert our values.
    9. $inserted = $statement->execute();
    10. //Because PDOStatement::execute returns a TRUE or FALSE value,
    11. //we can easily check to see if our insert was successful.
    12. if($inserted){
    13. echo 'Row inserted!
      '
      ;
    14. }
    15. //For our next row, we're going to insert a Honda Civic.
    16. //We will re-use the statement that we already prepared.
    17. $statement->bindValue(':make', 'Honda');
    18. $statement->bindValue(':model', 'Civic');
    19. //Execute the statement and insert our values.
    20. $statement->execute();

    请注意我们如何两次执行相同的语句,而不必为每次插入准备一个新语句。

    使用 PDO 的速记/快速插入。

    还有一个速记版本。

    1. //Create our SQL query.
    2. $sql = "INSERT INTO `cars` (`make`, `model`) VALUES (?, ?)";
    3. //Prepare the statement.
    4. $statement = $pdo->prepare($sql);
    5. //Execute it
    6. $statement->execute(array('Honda', 'Civic'));

    如您所见,这种方法要快得多。

    PDO初学者的相关阅读:

  • 相关阅读:
    [iOS]App Store Connect添加银行卡时的CNAPS代码查询
    plsql 查询数据中文乱码
    第十一章《Java实战常用类》第8节:Arrays类
    浅谈程序员的职业操守
    Linux网络编程1-简单的CS通信程序
    带你深入了解git
    qt qml中listview出现卡顿情况时的常用处理方法
    coco.py文件详解
    跨域自适应语义分割新技术
    Linux和树莓派基础交互
  • 原文地址:https://blog.csdn.net/allway2/article/details/126885956