Я пытаюсь сделать жизнь немного проще для повторных вызовов базы данных с помощью функции, которая должна (теоретически) позволять мне связывать параметры с помощью массива:
function query($tblName,$queryParams = false){ $this->queryObject = $this->con->prepare($this->queryString); if($queryParams){ foreach ($queryParams as $key => $value) { $this->queryObject->bindParam($key, $value); } } $this->queryResult = $this->queryObject->execute(); print_r($this->queryResult); }
Который я тогда называю так:
$queryParams = array(':userName' => $_POST['username'], ':password' => $_POST['password'], ':salt'=>$userUser->salt, ':userEmail'=>$_POST['email']); $registrationDb->query('tblUser', $queryParams);
Соединение с базой данных работает, и есть запись, но все значения устанавливаются в $_POST['email]
, и я не могу понять, почему это происходит.
Есть ли лучший способ сделать это?
bindParam
связывает переменную по ссылке, поэтому вам нужно bindValue
:
$this->queryObject->bindValue($key, $value);