sql >> Database >  >> RDS >> Mysql

bind waarden INSERT INTO mysql perl

Het is de bedoeling dat je een lijst aanlevert argumenten, één voor elk vraagteken, geen enkel scalair argument dat de strings van de argumenten bevat. Toen ik uw vraag beantwoordde eerder zei ik dat je het volgende moest doen:

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

Waar $new_row is uw tijdelijke aanduiding-tekenreeks, niet uw lijst met argumenten. Niet:

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

Omdat $new_row telt als één argument, omdat het een scalair is. Je hebt een array of lijst nodig van dezelfde lengte als het aantal vraagtekens.



  1. MySQL-implementatie met CUDA

  2. MySQLdb Python voegt %d en %s in

  3. null pointer uitzondering bij het proberen toegang te krijgen tot DatabaseHelper in een gekopieerde database van activa naar data\data\

  4. Hoe Europese valuta op te slaan in MySQL?