sql >> Databasteknik >  >> RDS >> Mysql

Hur man lägger till sista kolumnen i mysql-tabellen

Med tanke på koden du har lagt upp, så här skulle jag hantera det här.

Först skulle jag skapa en associativ uppslagsmatris vars nycklar är kolumnnamnen och vars värden är motsvarande punktvärden; det skulle se ut ungefär så här:

$pointVals = array('email1' => 2, 'email2' => 5, 'email3' => 2, ... );

Du kan skapa denna array hur du vill; Jag skulle förmodligen läsa det från en uppslagstabell i databasen. Observera att denna matris endast innehåller de kolumner som beräkningen är relevant för.

Därefter skulle jag inkludera följande kod inuti din while slinga. $row är postmatrisen som returneras av ditt anrop till mysql_fetch_array() .

while ($row = mysql_fetch_array($result)) {
  ... // existing code goes here
  $rowSum = 0;
  foreach($pointVals as $colName => $val)
  {
    if(isset($row[$colName]) && !empty($row[$colName]))
      $rowSum += $val;
  }
  ... // do stuff with $rowSum here
}

Med det sagt skulle jag starkt uppmuntra dig att konvertera från mysql drivrutinen till mysqli eller PDO , som mysql är utfasad och har tagits bort från PHP 7. Jag misstänker också starkt att din fråga kan förenklas och förbättras, men jag skulle behöva se bastabellen för att föreslå något.



  1. Underfråga med LIMIT i Doctrine

  2. Hur man komprimerar rader till en kommaavgränsad lista i en SQL-fråga i MySql

  3. PDO vs pg_* funktioner

  4. Förstå MyISAM-poststrukturen