sql >> Databasteknik >  >> RDS >> Mysql

En genväg för att uppdatera en tabellrad i databasen?

Fler frågor innebär mer tid, så om du uppdaterar varje fält individuellt (snarare än en rad åt gången) kommer det att ta betydligt längre tid.

Du kanske också vill använda ett filter på de inskickade värdena för att säkerställa att inget fält som du inte vill uppdatera kan bli.

Till exempel, om du hade en tabell över användare som hade kontosaldon listade mot dem:

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

Om jag kunde skicka ett formulär till din formulärhanterare, eftersom "kredit"-fältet skulle dyka upp i SHOW COLUMNS... fråga, jag skulle kunna skicka en POST-inlämning till dig via ett formulär som är avsett att användas för att jag ska kunna ändra mitt namn, med $_POST['user'] = "Mike Rowe" och $_POST['credit'] = 9999 , och du skulle ändra ovanstående till:

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

UPPDATERING: Föreslagen lösning

Istället för att lita på att databasfältnamnen är säkra att använda för att hantera en fråga som denna, varför inte ha en egen uppsättning redigerbara fält och bara gå igenom dem?

$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']
    ));

OBS:Den här koden är oprövad och inte som jag brukar använda den, så använd den som en guide, inte som en bibel...




  1. Så här löser du ORA-00900

  2. Försöker hämta lösenord från databasen

  3. app kraschar på JSON jparser gör http-förfrågan

  4. extrahera de ID som tilldelats en lista med användar-ID