Оператор подготовки PDO для вставки массива в проблему БД

Я создаю систему регистрации пользователей с использованием PDO и пытаюсь вставить данные формы пользователей в таблицу базы данных. Очень просто, однако в базу данных вводится неправильное значение. Значения, введенные в базу данных: :username, :password, :email_address, :city и т. д., а не значение, переданное функции из моей формы. Любая идея относительно того, что я делаю неправильно? Я пытался использовать bindParam и bindValue, но получил схожие результаты, и, основываясь на других сообщениях, я пришел к выводу, что использование массива — лучший способ сделать это. помощь!

    function add_user($username, $password, $email, $fName, $lName, $address, $city, $state, $zip, $phone ) {
global $db;
$sql = "INSERT INTO alumni_user_info 
        (username, password, email_address, first, last, address, city, state, zip_code, phone)
        VALUES
        (':username', ':password', ':email_address', ':first', ':last', ':address', ':city', ':state', ':zip_code', ':phone')";

$sth = $db->prepare($sql);      

$result = $sth -> execute(array(':username' => $username, ':password' => $password, ':email_address' => $email, ':first' => $fName, ':last' => $lName, ':address' => $address, ':city' => $city, ':state' => $state, ':zip_code' => $zip, ':phone' => $phone)); 


if ($sth->execute()) {
$success = "Registration successful";
return $success;

} else {
var_dump($result->errorInfo());
$success = "Registration failed";
return $success;
}

person Tony Fitzhugh    schedule 02.11.2013    source источник
comment
И чем исходное значение отличается от неправильного значения, которое попадает в базу данных?   -  person mario    schedule 03.11.2013
comment
Пропущен шаг: php.net/manual/en/pdostatement.bindparam.php   -  person Tieson T.    schedule 03.11.2013
comment
@ТисонТ. Он связывает параметры в execute функции.   -  person speccode    schedule 03.11.2013


Ответы (1)


Не используйте кавычки для параметров. Он будет экранирован, потому что вы уже привязываете параметры.

$sql = "INSERT INTO alumni_user_info 
    (username, password, email_address, first, last, address, city, state, zip_code, phone)
    VALUES
    (:username, :password, :email_address, :first, :last, :address, :city, :state, :zip_code, :phone)";

Если вы сделаете что-то подобное, ':username' PDO будет рассматривать это как строку.

person speccode    schedule 02.11.2013
comment
Большое спасибо за ваш быстрый ответ. работает как шарм. - person Tony Fitzhugh; 03.11.2013