开发者

Action in a DATABASE with PHP

I have an error when i try to connect my database.

Error : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

I doubt it was the ID but with phpMyAdmin I put it AUTOINCREMENT ...

Here's my code -->

From the DATABASE ON PHPMYADMIN

CREATE TABLE  `Compte_Utilisateur`.`info_compte` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 15 ) NOT NULL ,
`suffixe` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 15 ) NOT NULL ,
`siteWeb` VARCHAR( 20 ) NOT NULL ,
`fonction` VARCHAR( 10 ) NOT NULL
) ENGINE = INNODB;

And from my file php --> I want to ADD a User to the DATABASE (But YOU ALL ALREADY KNOW :D)

<?php
$username = $_POST["username"];
$suffixe = $_POST["suffixe"];
$passwd = $_POST["password"];
$site = $_POST["site"];
$fonction = $_POST["fonction"];

try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=compte_utilisateur', 'root', '', $pdo_options);

    $req 开发者_开发技巧= $bdd->prepare('INSERT INTO info_compte(username, suffixe, password, siteWeb, fonction) 
                            VALUES(:username, :suffixe, :passwd, :site, :fonction)');
    $req->execute(array(
    'username' => $username,
    'suffixe' => $suffixe,
    'password' => $passwd,
    'siteWeb' => $site,
    'fonction' => $fonction,
    ));
    echo 'Compte ajouté avec succès';
}
catch(Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
?>

Thanks to answer !


Are your binders matching? "username", "suffixe" and "fonction" look good but "password" and "siteWeb" look off. Your prepare shows "passwd" and "site" but you're using "password" and "siteWeb" as your binding keys.

$req->execute(array(
    'username' => $username,
    'suffixe' => $suffixe,
    'passwd' => $passwd,
    'site' => $site,
    'fonction' => $fonction));


(no php here to test...)

remove the last comma in the execute array:

$req->execute(array(
'username' => $username,
'suffixe' => $suffixe,
'password' => $passwd,
'siteWeb' => $site,
'fonction' => $fonction        // <-- no comma here... 
));

or your array will include an additional null element and thus be too large.


I think the problem is that mysql doesn't support named parameters in the prepared sql.
use ? instead of :name (and also remove these names form the array)

update: looks like this is not a problem with a PDO driver (I'm more familiar with JDBC drivers...)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜