MySQL sorok összehasonlítása egy PHP tömbbel
2021-04-18T18:32:44+02:00
2021-04-18T18:50:33+02:00
2022-08-12T02:05:35+02:00
*deleted_23419333
Sziasztok!

Van egy PHP tömb a legfrissebb adatokkal, ami egy távoli RSS/XML fájlból származik:

$arr = array ( 0 => array ( 'tr_id' => 't8g5a2j8a9' ), 1 => array ( 'tr_id' => 'a0z0b0g8p0' ), 2 => array ( 'tr_id' => 'p1f6g5f5g9' ), // ... összesen 40 sor van 39 => array ( 'tr_id' => 'g1g5y2u2g2' ) );

És vannak az adatok MySQL táblában:

CREATE TABLE `tr` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `tr_id` VARCHAR(10) NOT NULL ); INSERT INTO `tr` ( `tr_id` ) VALUES ( 'a9y6c9t2x3' ); INSERT INTO `tr` ( `tr_id` ) VALUES ( 'r5f6d1u2h2' ); INSERT INTO `tr` ( `tr_id` ) VALUES ( 'p1f6g5f5g9' ); INSERT INTO `tr` ( `tr_id` ) VALUES ( 'o2e9a4f9q4' );

Hogyan tudnám törölni azokat a sorokat a tömbből, amik már szerepelnek az adatbázisban?
Mutasd a teljes hozzászólást!
Bár én nem használok PHP-t, de így csinálnám:

1. Gyártasz egy SQL queryt:

select tr_id from tr where tr_id in ('t8g5a2j8a9','a0z0b0g8p0','p1f6g5f5g9',...,'g1g5y2u2g2')
(Ideális esetben ezt nem sztring összefűzéssel csinálod, hanem prepared statementtel, aminek megoldása házi feladat.)

2. Végigmész az eredményhalmazon, és törlöd a tömbből azokat az elemeket, amik benne vannak az eredményhalmazban. (Nem értek a PHP-hoz, de ha másképp nem, akkor egy új tömb felépítésével biztosan megoldható. Ha van neki valami kézre eső halmaz típusa, akkor az SQL eredményhalmazból építhetsz halmazt.)
Mutasd a teljes hozzászólást!

abcd