sql >> Database >  >> RDS >> Mysql

Een snelkoppeling om een ​​tabelrij in de database bij te werken?

Meer zoekopdrachten betekent meer tijd, dus als u elk veld afzonderlijk bijwerkt (in plaats van een rij tegelijk), duurt het aanzienlijk langer.

U kunt ook een filter toepassen op de ingediende waarden om ervoor te zorgen dat er geen velden kunnen worden weergegeven die u niet wilt bijwerken.

Als u bijvoorbeeld een tabel had met gebruikers die rekeningsaldi bij hen hadden vermeld:

id | user       | credit
==========================
1  | John Smith | 50

Als ik een formulier zou kunnen indienen bij uw formulierbehandelaar, aangezien het veld "tegoed" zou verschijnen in de SHOW COLUMNS... vraag, ik zou je een POST-inzending kunnen sturen, via een formulier dat bedoeld is om voor mij te worden gebruikt om mijn naam te wijzigen, met $_POST['user'] = "Mike Rowe" en $_POST['credit'] = 9999 , en je zou het bovenstaande veranderen in:

id | user       | credit
==========================
1  | Mike Rowe  | 9999

UPDATE: Voorgestelde oplossing

In plaats van erop te vertrouwen dat de databaseveldnamen veilig te gebruiken zijn voor het afhandelen van een zoekopdracht als deze, waarom zou u dan niet uw eigen reeks bewerkbare velden hebben en er gewoon doorheen lopen?

$editable_fields = array(
  'pg_url' ,
  'pg_title' ,
  ...
);

$form_values = array();
$sql_pattern = array();
foreach( $editable_fields as $k ){
  if( $k != 'pg_id'
      && isset( $_POST[$k] ) ){
    $form_values[$k] = $_POST[$k];
    // NOTE: You could use a variant on your above code here, like so
    // $form_values[$k] = set_variable( $_POST , $k );
    $sql_pattern[] = "$k = ?";
  }
}

$sql_pattern = 'UPDATE root_pages SET '.implode( ' , ' , $sql_pattern ).' WHERE pg_id = ?';

# use the instantiated db connection object from the init.php, to process the query
$result = $connection->run_query($sql_pattern,array_merge(
    $form_values ,
    $_POST['pg_id']
    ));

OPMERKING:deze code is niet getest en is niet de manier waarop ik gewoonlijk werk, dus gebruik hem als richtlijn, niet als bijbel...




  1. Records selecteren in volgorde van ouder-ID

  2. Vindt u berichten met tag1 EN tag2? (met behulp van een join-tabel) Bestaat / Heeft / subquery's... Wat te gebruiken?

  3. TYPE Definitiewijziging in Oracle 21c

  4. Hoe COUNT(*) prestaties op InnoDB te optimaliseren met behulp van index