我正在尝试用insert方法创建一个数据库类,以便更容易地将数据从代码中的不同位置插入到数据库中。我现在得到的是工作,唯一的问题是我希望$variable也是动态的。所以我可以这样使用它:
db_insert('users', 'username, password, name, email', 'ssss', $variable1, $variable2, $variable3);
我想传递多少变量就传递多少。但我真的不知道该怎么做。有什么建议吗?
<?php
class Database {
public $conn;
function __construct() {
$this->conn = new mysqli("localhost","username","password","database");
}
// $database = database name
// $tables = table names separated by ,
// $types = variable types
// $variable = variables separated by ,
// EX: db_insert('users', 'username, password, name, email', 'ssss', $variable)
function db_insert($database, $tables, $types, $variable) {
// Generate values string based on the value of $types
$replace = array("i", "d", "s", "m"); // characters to replace
$replace_with = array("?,", "?,", "?,", "?,"); // characters to replace with
$values = str_replace($replace, $replace_with, $types); // replace 'i', 'd', 's', 'm' with '?,'
$values = rtrim($values,", "); // remove last ',';
$stmt = $this->conn->prepare("INSERT INTO $database ($tables) VALUES ($values)"); // prepare statement
$stmt->bind_param($types, $variable); // bind parameters
$stmt->execute(); // insert to database
}
}
$data = "test";
$dbConn = new Database();
$dbConn->db_insert("users", "username", "s", $data);
?>
3条答案
按热度按时间uelo1irk1#
我找到了一个解决方案,通过传入一个数组,然后在绑定中在其前面添加“…”,如下所示:
$stmt->绑定参数($types,…$variables);
ujv3wf0j2#
可能还有其他一些方法可以做到这一点,但这或多或少是我在一个奇怪的场合使用的方法-你将需要研究这一点,并调整/采用,以适应你的需要。
快速将其散列到几个函数中
你可以这样称呼它
作为在mysqli中使用动态查询构建的完整演示,请考虑以下内容
在事情的另一面
在运行了几次脚本之后,一个快速的cmdline查询
vuktfyat3#
请这样试试