如何将bind_param与非变量绑定

时间:2019-04-16 09:02:27

标签: php mysqli

我有一个功能,可以轻松地进行准备好的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); 

但是我不接受对字符串有帮助的物品吗?

1 个答案:

答案 0 :(得分:1)

您需要将每个参数分别传递给bind_param()

使用array unpacking可以为您提供比硬编码更大的灵活性的解决方案:您可以传递具有所有单个值的数组,并在需要的地方拆包:

$param = [
    'iissiii',
    $task_id,
    $login_id,
    // etc.
];

在您的函数中:

$stmt_db->bind_param(...$param);