Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstawianie danych z Perla do MysQL

Twoje użycie $db_config zmienna wygląda podejrzanie. Albo Twój skrót konfiguracji jest dziwny, albo używasz wartości zamiast kluczy.

Nie pokazałeś nam, gdzie $db_config jest skonfigurowany, ale myślę, że wygląda mniej więcej tak:

$db_config = {
  name => 'Top_Data',
  host => '127.0.0.1',
  port => 3306,
  username => 'someone',
  password => 'a secret',
};

A potem użyjesz go w ten sposób:

my $dsn = "DBI:mysql:database=".$db_config->{name}.";host=".$db_config->{host}.";port=".$db_config->{port};

Zauważ, że użyłem nazw kluczy (name , host i port ) zamiast wartości (Top_Data , 127.0.0.1 i 3306 ).

Wskażę również, że możesz to nieco uprościć, używając zdolności Perla do rozszerzania zmiennych wewnątrz łańcucha z podwójnym cudzysłowem.

my $dsn = "DBI:mysql:database=$db_config->{name};host=$db_config->{host};port=$db_config->{port}";

Później pojawia się inny problem z instrukcją SQL.

my $sql = 'insert into Top(Load_Average, CPU_us, CPU_id, CPU-wa, CPU_hi, 
           CPU_si, CPU_st, Swap_Total, Swap_Free, Swap_Used, Memory_Total, 
           Memeory_Free, Memory_Used, Memory_Buff, Date) 
           values(float,float,float,float,float,float,float,float,
           varchar,varchar,varchar,varchar,varchar,varchar,date)';

Wartości, które należy wstawić, to rzeczywiste elementy danych. Jeśli więc masz ciągi „float”, „varchar” lub „date”, powinieneś mieć elementy danych (liczbę zmiennoprzecinkową, ciąg znaków lub datę).

Wreszcie, po przygotowaniu oświadczenia, nie musisz przekazywać go do execute() metoda. Powinieneś jednak przyjrzeć się używaniu punktów wiązania w swoim SQL i przekazywaniu rzeczywistych elementów danych do execute() zadzwoń




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Radzenie sobie z serwerem PHP i serwerem MySQL w różnych strefach czasowych

  2. Dlaczego MySQL nie używa indeksu w polu int, które jest używane jako wartość logiczna?

  3. Emulacja bezpiecznej dla transakcji SEKWENCJI w MySQL

  4. Czy MySQL może podzielić kolumnę?

  5. Utwórz wielowymiarową tablicę z tabeli bazy danych