我有一个功能,可以轻松地进行准备好的sql查询
这是功能
function preparedConnection($stmt,$param){
$dbUsername= 'root';
$dbPassword='';
$dbip = 'localhost';
$db = '129393';
$conn = new mysqli($dbip, $dbUsername, $dbPassword, $db);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo $stmt."<br>";
$stmt_db = $conn->prepare($stmt);
echo $param;
$stmt_db->bind_param($param);
$stmt_db->execute();
$stmt_db->close();
$conn->close();
exit();
}
这是我的用法
$stmt = "INSERT INTO task_times (task_id, login_id, title, description,
used_fixed_price_per_hour ,used_discount_percent, used_price_type) VALUES (?, ?, ?, ?, ?, ?, ?)";
$param = "'iissiii', $task_id , $login_id, '$title', '$description', $used_fixed_price_per_hour, $used_discount_percent, $used_price_type";
$db->preparedConnection($stmt,$param);
但是我不接受对字符串有帮助的物品吗?
答案 0 :(得分:1)
您需要将每个参数分别传递给bind_param()
。
使用array unpacking可以为您提供比硬编码更大的灵活性的解决方案:您可以传递具有所有单个值的数组,并在需要的地方拆包:
$param = [
'iissiii',
$task_id,
$login_id,
// etc.
];
在您的函数中:
$stmt_db->bind_param(...$param);