sql >> Base de Datos >  >> RDS >> Mysql

enlazar valores INSERTAR EN mysql perl

Se supone que debes proporcionar una lista de argumentos, uno para cada signo de interrogación, no un solo argumento escalar que contenga las cadenas de los argumentos. Cuando respondí tu pregunta antes, te dije que hicieras:

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

Donde $new_row es su cadena de marcador de posición, no su lista de argumentos. No:

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

Porque $new_row cuenta como un argumento, ya que es un escalar. Necesita una matriz o lista de la misma longitud que el número de signos de interrogación.