如何使用PHP准备了大量不同类型的字段



我正在使用prepare插入具有VARCHAR、TIMESTAMP和DECIMAL类型的数据。

数据已采用mySQL所需的格式。

我的问题是这个。假设我只有两个项目要插入。我想这样做:

$stmt = $mysqli->prepare("INSERT INTO myTable (name, age) VALUES (?, ?)");
$stmt->bind_param("si", $_POST['name'], $_POST['age']);

我的问题是绑定部分。当我必须一次插入40列时,我该如何进行绑定?

我可以通过这样做来处理准备部分:

$sql = "INSERT INTO customers ($columns) VALUES ($values)";
$stmt = $mysqli->prepare($sql);

但下一行将导致一条荒谬的长队,不可能理解,也很容易出错。

$stmt->bind_param("ssssiidisisssiidiisssidiisidi", ....); 

例如,我不知道如何在循环中构建它。

我该怎么做?

您可以使用PHP 5.6中引入的...语法将数组作为变量参数传递给mysqli_stmt::bind_param()函数。

$params = ['name', 42];
$stmt = $mysqli->prepare("INSERT INTO myTable (name, age) VALUES (?, ?)");
$stmt->bind_param(str_repeat('s', count($params)), ...$params);
$stmt->execute();

您实际上不需要为每一列单独设置数据类型。您可以将它们全部视为's'


我知道你在问关于mysqli的问题,但我只想指出,PDO:更容易做到这一点

$params = ['name', 42];
$stmt = $pdo->prepare("INSERT INTO myTable (name, age) VALUES (?, ?)");
$stmt->execute($params);

最新更新