Mysql
 sql >> Base de données >  >> RDS >> Mysql

lier les valeurs INSERT INTO mysql perl

Vous êtes censé fournir une liste d'arguments, un pour chaque point d'interrogation, pas un seul argument scalaire contenant les chaînes des arguments. Quand j'ai répondu à votre question avant, je vous ai dit de faire :

my @values = map param($_), @account_field_order; # add values to array
push @values, $status;                  # for simplicity
$new_row = join ", ", ("?") x @values;  # add ? for each value

... # basically same code as before, except the execute statement:

$sth->execute(@values);      # arguments given will be inserted at placeholders

$new_row est votre chaîne d'espace réservé, pas votre liste d'arguments. Non :

$new_row .= "'" . param($field) . "', ";
...
$new_row .= "'$status'";
$sth->execute(qq($new_row)) or die $DBI::errstr;

Parce que $new_row compte comme un argument, puisqu'il s'agit d'un scalaire. Vous avez besoin d'un tableau ou d'une liste de la même longueur que le nombre de points d'interrogation.