PHP: INSERT PDO массив запросов в качестве значения привязки - PullRequest
0 голосов
/ 19 сентября 2019

Как использовать PDO Query array с Bindvalue таким образом?Я получаю сообщение об ошибке

$productadd_query_array = array(
        "query" => "INSERT INTO vn_product (title) VALUES (:title)",
        "query_variables" => "bindValue(':title', '1')"
    );

$product_add = vn_db_query_select( $productadd_query_array );

Функция vn_db_query_select:

function vn_db_query_select($array = null){

        if ( is_null( $array ) || !defined( 'MYSQL_USER' ) || !defined( 'MYSQL_PASSWORD' ) || !defined( 'MYSQL_HOST' ) || !defined( 'MYSQL_DATABASE' ) ) {
            return false;
        }

        if ( !isset( $array["query"] ) || is_null( $array["query"] ) || strlen( $array["query"] ) < 11 ) {
            return false;
        }

        $pdo = new PDO(
            "mysql:host=" . MYSQL_HOST . ";dbname=" . MYSQL_DATABASE.";charset=utf8", // DSN
            MYSQL_USER, // Username
            MYSQL_PASSWORD // Password
            //$pdoOptions // Options
        );

        $userInfo = $pdo->prepare($array["query"]); 

        if ( is_array( $array["query_variables"] ) ) {
            foreach ($array["query_variables"] as $var_name => $var_value) {
                $userInfo->bindValue(":".$var_name, $var_value);
            }
        }

        $userInfo->execute();
        $user = $userInfo->fetchAll();

        $pdo = null;

        return $user;
    }

1 Ответ

1 голос
/ 19 сентября 2019

Если вы посмотрите на код для query_variables здесь:

if ( is_array( $array["query_variables"] ) ) {
      foreach ($array["query_variables"] as $var_name => $var_value) {
           $userInfo->bindValue(":".$var_name, $var_value);
    }
}

Ожидается массив ключей => значений.Поэтому вам нужно передать его так:

"query_variables" => ['title'=> '1']

Или для более старых версий PHP:

"query_variables" => array('title'=>'1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...