php - 使用 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>
解决方案
您正在准备语句,但您应该执行它。
但是,您的代码受到 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);
}
推荐阅读
- javascript - 如何将 USSD 代码 API 转换为普通的 RESTful API?
- bash - 使用bash获取for循环中的两个变量形成两个不同的列表
- postgresql - 如何使用sqlx将变量传递给do块?
- mysql - Sequelize - 如何在迁移脚本中处理动态数据
- javascript - Next.js 500 内部服务器错误在 404 页面内调用 useEffect Hook 后立即出现
- api - 需要一个应该提供服务器监控信息的 Rest API?
- git - 如何从 Git for Windows 客户端 git 推送到在 ubuntu 上运行的 git-daemon
- sql - SQL如何在插入之前检查列是否存在
- javascript - 如何将一个数组与另一个数组合并
- python - 在 heroku 上部署烧瓶项目后,os 模块无法正常工作