sql >> Databasteknik >  >> RDS >> Mysql

bind värden INSERT INTO mysql perl

Du ska tillhandahålla en lista av argument, ett för varje frågetecken, inte ett enda skalärt argument som innehåller argumentens strängar. När jag svarade på din fråga innan sa jag åt dig att göra:

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

Där $new_row är din platshållarsträng, inte din argumentlista. Inte:

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

Eftersom $new_row räknas som ett argument, eftersom det är en skalär. Du behöver en array eller lista med samma längd som antalet frågetecken.



  1. Summering av datumintervall utan att räkna överlappningar i mysql

  2. Konvertera strftime i SQLite-förfrågan till MySQL

  3. Vad är standardstorleken för en varchar2-ingång till Oracles lagrade procedur, och kan den ändras?

  4. Fixa DB-dubblettposter (MySQL-bugg)