sql >> Database teknologi >  >> RDS >> Mysql

bind værdier INSERT INTO mysql perl

Du skal levere en liste af argumenter, et for hvert spørgsmålstegn, ikke et enkelt skalarargument, der indeholder argumenternes strenge. Da jeg besvarede dit spørgsmål før fortalte jeg dig at gøre:

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

Hvor $new_row er din pladsholderstreng, ikke din argumentliste. Ikke:

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

Fordi $new_row tæller som ét argument, da det er en skalar. Du skal bruge et array eller en liste af samme længde som antallet af spørgsmålstegn.



  1. Mærkelige karakterer i mysql dbase

  2. Firemonkey Mobile Application og fjernbetjening MySQL

  3. Hvordan opdaterer man en PDF-fil, der allerede er blevet tilføjet til databasen i PHP?

  4. Opdater data via en funktion med tabelværdi i SQL Server