Postgresql lekérdezés ellenőrzése PHP-ban

Postgresql lekérdezés ellenőrzése PHP-ban
2018-04-05T16:06:02+02:00
2018-04-05T16:55:07+02:00
2022-12-05T06:40:30+01:00
Hanabi
Sziasztok!
A következő a problémám: van egy string, ami egy PostgreSQL UPDATE lekérdezés SET részét tartalmazza. Ezt kellene valahogy PHP-ban leellenőrizni, hogy a benne szereplő összes mező bele fog-e férni az adatbázis mezőbe, azaz nem fog a lekérdezés hibával visszatérni. Ezt úgy gondoltam megoldani, hogy a lekérdezést felbontom mező = érték részekre és egyenként levagdosom, ha az adott érték hosszabb, mint ami belefér a mezőbe.
Amit már próbáltam és nem jó: explode, mert bárhol előfordulhatnak olyan string értékek, amik tartalmaznak vesszőt, vagy szimpla idézőjelet; PHPSQLParser, a függvényeket, kifejezéseket rosszul bontja.
A lekérdezésben bármi előfordulhat, azaz pl. ilyen rondaság is, hogy

email = CASE WHEN (SELECT COUNT(pkod) FROM rendszer.right_user WHERE pkod = 543) < 1 THEN (SELECT eml FROM partner.inet WHERE pkod = 543 AND torolt = 0 ORDER BY sorsz, eml LIMIT 1) ELSE '' END
ami egy kifejezés és ezt pont nem kéne levágni.
Próbáltam saját darabolót is írni, ami karakterenként végigmegy a stringen. Ez egész jó lett, de a fenti példán elhasal és nincs több ötletem.
A string általános alakja, amit fel kéne bontani:

mezo1 = ertek1, mezo2 = ertek2, mezo3= ertek3
És az értékek bármit tartalmazhatnak, amit egy PostgreSQL lekérdezés elfogad.
Köszönöm
Mutasd a teljes hozzászólást!
1.) Ha olyan adatot akarsz beszúrni, amit a programod (vagy az adatbázisod) állít elő, akkor az legyen akkora, ami belefér (vagy növeld a méretet, ha mégsem)!
A mintád pl. egy email-t szúr be... marhajó lesz, ha levágod a végét.

2.) Ha felhasználótól érkező adatról van szó, azt amúgy is validálni szokás mielőtt beadjuk az adatbázisnak. Szólj vissza, hogy írjon kevesebbet (lehetőleg ne is engedj többet írni)!

3.) Ha "programozottan" valami api-n keresztül jönnek az adatok, akkor pedig nyilván specifikálni kell a dolgot (egyszerűbb esetben csak megegyezni a másik féllel az érintett mezőkkel kapcsolatos követelményekről)!

Szerintem semmi értelme össze-vissza vagdosni, ha mégis ezt akarod, akkor talán egy saját postgres függvény megírása lenne a célszerű (ha nincs még ilyen... ezt nem tudom), és azon átereszteni minden egyes beszúrandó adatot.

Ha félreértettem a kérdést, akkor bocs.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd