как связать bind_param с не переменными - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть функция, которая облегчает создание готовых 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 Ответ

1 голос
/ 16 апреля 2019

Вам нужно передать каждый параметр в bind_param() индивидуально.

Возможное решение, которое дает вам немного больше гибкости, чем его жесткое программирование, заключается в использовании распаковки массива : вы передаетемассив со всеми отдельными значениями и распакуйте его там, где вам нужно:

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

А в вашей функции:

$stmt_db->bind_param(...$param);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...