sql >> Database >  >> RDS >> Mysql

MySQL verkeerde uitvoer met IN-clausule en parameter

Zo werken parameters niet; ze hebben geen idee dat wat u probeert te bieden een door komma's gescheiden lijst met waarden is. Als u ParamByName('WhatEver').AsString . instelt of Value , denkt hij dat je een string tussen aanhalingstekens bedoelt die alles bevat wat in die parameter thuishoort. Het doet dus precies wat het lijkt te doen - het geeft IN ('1, 2, 3') door , in plaats van de bedoelde IN (1, 2, 3) .

Je moet ofwel teruggaan naar het zelf ontleden en een tijdelijke tabel gebruiken, of de WHERE bouwen clausule dynamisch en aaneengeschakeld voordat de query wordt uitgevoerd. (Eigenlijk zou u de query dynamisch kunnen bouwen, door een nieuwe parameter te maken voor elk van de items in de IN clausule, en loop dan door en wijs waarden toe aan elk van die dynamisch gecreëerde parameters, maar dat wordt erg snel erg lelijk.)



  1. Fout #2101:De string die wordt doorgegeven aan URLVariables.decode() moet een URL-gecodeerd zijn

  2. PHP-waarschuwing:PHP-opstart:kan dynamische bibliotheek '/usr/lib/php/20151012/msqli.so' niet laden

  3. Back-up van een database in SQL Server 2017

  4. Bewaar meerdere e-mailadressen in de database voor verschillende gebruikerstypes