sql >> Databasteknik >  >> RDS >> Mysql

Jämför två arrayer med olika nyckelnamn

Ge ett av eller båda fälten ett alias så att de matchar nyckelmässigt:

$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";

Nu finns det en nyckel till module istället för modname .

Du kan använda array_diff för att hitta skillnaden mellan arrayer så länge de har liknande struktur. I ditt fall skulle detta vara att ta bort de andra två nycklarna från din andra DB-fråga.

Till exempel:

$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";
$result1 = $conn->query($sql1);
while ($row = $result1->fetch_assoc()){
   $indMods[] = $row;
}

$sql2 = "SELECT module FROM modules WHERE level = '$level'";
$result2 = $conn->query($sql2);
while ($row2 = $result2 -> fetch_assoc()){
   $allMods[] = $row2;
}

$difference = array_diff($indMods, $allMods);

Dokumentation för PHP:s array_diff :http://php.net/manual/en/function.array- diff.php

Observera att det finns många sätt att göra detta. Det här är bara en.



  1. Fyller i saknade datum per grupp

  2. Hur kontrollerar man om insättningen misslyckas?

  3. Det bästa sättet att ta bort värde från SET-fältet?

  4. Hur anropar jag en databasfunktion med SQLAlchemy i Flask?