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

PDO PHP wstawia się do bazy danych z tablicy asocjacyjnej

Ostatnim razem, gdy sprawdzałem, nie było możliwe przygotowanie zestawienia, w którym kolumny, których dotyczy problem, były nieznane w czasie przygotowywania – ale to wydaje się działać – może twój system baz danych jest bardziej wyrozumiały niż te, których używam (głównie postgres)

To, co jest wyraźnie błędne, to instrukcja implode(), ponieważ każda zmienna powinna być obsługiwana samodzielnie, potrzebujesz również nawiasów wokół listy pól w instrukcji INSERT.

Aby wstawić pola zdefiniowane przez użytkownika, myślę, że musisz zrobić coś takiego (przynajmniej tak, jak to robię);

$fields=array_keys($a); // here you have to trust your field names! 
$values=array_values($a);
$fieldlist=implode(',',$fields); 
$qs=str_repeat("?,",count($fields)-1);
$sql="insert into user($fieldlist) values(${qs}?)";
$q=$DBH->prepare($sql);
$q->execute($values);

Jeśli nie możesz ufać nazwom pól w $a, musisz zrobić coś takiego

foreach($a as $f=>$v){
   if(validfield($f)){
      $fields[]=$f;
      $values[]=$v;
   }
}

Gdzie validfields to funkcja, którą piszesz, która testuje każdą nazwę pola i sprawdza, czy jest ona poprawna (szybko i brudno, tworząc tablicę asocjacyjną $valfields=array('name'=>1,'email'=>1, 'phone'=>1 ... a następnie sprawdzenie wartości $valfields[$f], lub (jak wolałbym) poprzez pobranie nazw pól z serwera)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieprzechwycony wyjątek „PDOException” komunikat „nieprawidłowa nazwa źródła danych”

  2. mysql-connector-java-8.0.12 :pojawia się błąd dla strefy czasowej serwera „Czas standardowy półwyspu malajskiego”

  3. Zapytanie MySQL w celu przypisania unikalnej liczby losowej do każdego wiersza

  4. jak usunąć ukośnik odwrotny (\) w odpowiedzi json za pomocą php?

  5. Składnia MySQL dla Dołącz do aktualizacji