sql >> Database teknologi >  >> RDS >> Mysql

Sammenligning af to arrays med forskellige nøglenavne

Giv et af eller begge felterne et alias, så de matcher nøglemæssigt:

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

Nu er der en nøgle til module i stedet for modname .

Du kan bruge array_diff at finde forskellen mellem arrays, så længe de har ens struktur. I dit tilfælde ville dette være at fjerne de to andre nøgler fra din anden DB-forespørgsel.

For eksempel:

$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 for PHP's array_diff :http://php.net/manual/en/function.array- diff.php

Bemærk, at der er mange måder at gøre dette på. Dette er kun én.



  1. Rengøring af PHP-variabler, overbruger jeg det?

  2. cronjob læsning fra én database og skrivning til en anden

  3. Betyder rækkefølgen af ​​tabeller, der henvises til i ON-klausulen i JOIN?

  4. Henter rækker fra flere tabeller med UNION ALL eller bruger du én tabel i produktionen?