首页 > 解决方案 > 使用 PDO 连接将数据插入 mysql 数据库并使用 oop 插入

问题描述

我尝试将数据插入 mysql 数据库。我用 mysql 创建了 PDO 连接,现在我想用 oop 将数据插入数据库。我尝试了一百万种方法,但没有结果。

谁能帮帮我?

include "DB.php";

class DataOperation extends Dbh {
  public
  function insert_record($table, $fields) {
    $insert = "";
    $insert. = "INSERT INTO ".$table;
    $insert. = " (".implode(",", array_keys($fields)).
    ") VALUES ";
    $insert. = "('".implode("','", array_values($fields)).
    "')";
    $this - > pdo - > prepare($insert);
  }
}



$obj = new DataOperation;
if (isset($_POST["create"])) {
  $myArray = array(
    "firstname" => $_POST['firstname'],
    "lastname" => $_POST['lastname'],
    "email" => $_POST['email']
  );

  $obj - > insert_record("Users", $myArray);
}
<form action="insert.php" method="POST">
  <input type="text" class="inputs" name="firstname">
  <input type="text" name="lastname">
  <input type="text" name="email">
  <button type="submit" name="create">Sign Up</button>
</form>

DB.php 的图像

标签: phphtmlmysqlpdo

解决方案


您正在准备语句,但您应该执行它。

但是,您的代码受到 SQL 注入的影响,您应该在查询中使用占位符。

public function insert_record($table,$fields){
    $field_names = array_keys($fields);
    $placeholders = array_map(function($field) { return ":$field"; }, $field_names );
    $insert = "";                     
    $insert .= "INSERT INTO " . $table;
    $insert .= " (" . implode(",", $field_names) . ") VALUES ";
    $insert .= "('" . implode(",", $placholders) . ")";
    $stmt = $this->pdo-> prepare($insert);
    $stmt->execute($fields);
}

推荐阅读