在准备好的语句中绑定太多变量的更短方法
Shorter way of binding too many variables in prepared statement
我在 PHP 中使用 CRUD 的预编译语句。我的代码片段:
$SQL="INSERT INTO Dress(DressID, Description, Size, Price, EntryDate, CategoryID, ColorID)
VALUES (?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE Description=?, Size=?, Price=?, EntryDate=?, CategoryID=?, ColorID=?";
$stmt=$connection->prepare($SQL);
$stmt->bind_param("ssssss", $ColorID, $Color, $Color);
然后,我必须重复 bind_param
函数中的变量绑定,例如 bind_param("sssssssss", $var1, $var2, $var1, $var2, $var3..)
。
有什么办法可以缩短这个绑定吗?
您可以将参数传递给 ->execute()
方法,如下所示:
$stmt->execute([123, 'red', 'green', ... ]);
如果您将参数保存在一个数组中,而不是将它们分配给变量,那么将它们绑定到准备好的语句会变得相当简单。
我在 PHP 中使用 CRUD 的预编译语句。我的代码片段:
$SQL="INSERT INTO Dress(DressID, Description, Size, Price, EntryDate, CategoryID, ColorID)
VALUES (?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE Description=?, Size=?, Price=?, EntryDate=?, CategoryID=?, ColorID=?";
$stmt=$connection->prepare($SQL);
$stmt->bind_param("ssssss", $ColorID, $Color, $Color);
然后,我必须重复 bind_param
函数中的变量绑定,例如 bind_param("sssssssss", $var1, $var2, $var1, $var2, $var3..)
。
有什么办法可以缩短这个绑定吗?
您可以将参数传递给 ->execute()
方法,如下所示:
$stmt->execute([123, 'red', 'green', ... ]);
如果您将参数保存在一个数组中,而不是将它们分配给变量,那么将它们绑定到准备好的语句会变得相当简单。