PHP: невозможно вставить в таблицу MYSQL с помощью PDO - PullRequest
1 голос
/ 12 января 2012

Приведенная ниже команда MYSQL INSERT, использующая PDO, просто не работает.И после того, как это терпит неудачу и сообщает об этом, команда DROP TABLE также терпит неудачу.Я просто не могу понять, что не так с кодом: /

$sql = $db2->prepare(
'INSERT INTO citizens_12_01_12
(login, rank, xp, level, citizenship, totalDamage, economySkill, damageToday, strength) 
VALUES 
(:login, :rank, :xp, :citizenship, :totalDamage, :economySkill, :damageToday, :strength)'
);
$sql->bindParam(':strength', $api->strength, PDO::PARAM_INT);
$sql->bindParam(':damageToday', $api->damageToday, PDO::PARAM_INT);
$sql->bindParam(':economySkill', $api->economySkill, PDO::PARAM_INT);
$sql->bindParam(':totalDamage', $api->totalDamage, PDO::PARAM_INT);
//$sql->bindValue(':organization', api->organization, PDO::PARAM_BOOL);
$sql->bindParam(':citizenship', $api->citizenship, PDO::PARAM_STR);
$sql->bindParam(':level', $api->level, PDO::PARAM_INT);
$sql->bindParam(':xp', $api->xp, PDO::PARAM_INT);
$sql->bindParam(':login', $api->login, PDO::PARAM_STR);
$sql->bindParam(':rank', $api->rank, PDO::PARAM_STR);

if ($sql->execute()) {
    echo "Query succeeded.";
} else {
    echo "Query failed.";
    $db2->query("DROP TABLE 'citizens_12_01_12'");
}

Следующая ошибка в error_log:

PHP Warning:  PDOStatement::execute() [<a href='pdostatement.execute'>pdostatement.execute</a>]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in .../getcitizens.php on line 55

Строка 55 - строка $ sql-> execute ()

1 Ответ

6 голосов
/ 12 января 2012

Вам не хватает вашей переменной :level в операторе вставки.

Должно быть:

$sql = $db2->prepare(
'INSERT INTO citizens_12_01_12
(login, rank, xp, level, citizenship, totalDamage, economySkill, damageToday, strength) 
VALUES 
(:login, :rank, :xp, :level, :citizenship, :totalDamage, :economySkill, :damageToday, :strength)'
);
...