Regex worked as a LIKE workaround. The backend database is PostgreSQL 9.5.9.
On Wednesday, October 11, 2017, 4:28:27 PM CDT, Lime, Steve D (MNIT) <steve.l...@state.mn.us> wrote: What’s the backend database – it’s possible the IN operator is screwy for that driver? For the LIKE operator I should have remembered that MapServer doesn’t support that operator, try a regex instead: queryByAttributes("municipio", "(‘[municipio]’ ~ 'G.*')", MS_MULTIPLE); Steve From: Carlos Ruiz [mailto:boolean10...@yahoo.com] Sent: Wednesday, October 11, 2017 4:03 PM To: mapserver-users@lists.osgeo.org; Sven Schroeter <schroe...@netgis.de>; Lime, Steve D (MNIT) <steve.l...@state.mn.us> Subject: Re: RE: [mapserver-users] php Mapscript queryByAttributes Hey Steve, > the IN operator works off a delimited list, try queryByAttributes("gid", > "([gid] IN ‘100,101’)", MS_MULTIPLE);. Any whitespace > is considered part of > the tokens in a list. I have tried this and it doesn't work. There's a query error because Mapserver try to add the following:and ("gid"'100,101') > This is close, it’s a logical expression but you’re comparing a number > against a string. It should be > queryByAttributes("municipio", "(‘[municipio]’ LIKE 'G%')", MS_MULTIPLE); I have tried this and it doesn't work. There's a query error because Mapserver try to add the following:and ("municipio"::text'G%') Maybe this happens because the MS4W version (3.1.3) with Mapserver CGI 7.0.1 On Wednesday, October 11, 2017, 2:31:41 PM CDT, Lime, Steve D (MNIT) <steve.l...@state.mn.us> wrote: The query syntax is given in MapServer expression syntax. I think there’s a logical expression for why you’re seeing these results: queryByAttributes("gid", "gid > 100", MS_MULTIPLE) // does not found anything is evaluated as gid = “gid > 100”. Valid but not what you’re looking for. Your last example is the right way to do it - queryByAttributes("gid", "([gid] > 100)", MS_MULTIPLE);. If MapServer sees the qstring is a logical expression then it ignores the qitem. queryByAttributes("gid", "100", MS_MULTIPLE) // found one result is evaluated as gid = 100 which makes sense. queryByAttributes("municipio", "'GUADALAJARA'", MS_MULTIPLE) // found one result is evaluated as municipio = GUADALAJARA which makes sense. I don’t think you need the interior quotes around GUADALAJARA though. queryByAttributes("municipio", "municipio LIKE 'G%'", MS_MULTIPLE) // does not found anything like the first example this evaluates as municipio = "municipio LIKE 'G%'", not what you want. See below… queryByAttributes("gid", "([gid] IN (100, 101))", MS_MULTIPLE); // query error the IN operator works off a delimited list, try queryByAttributes("gid", "([gid] IN ‘100,101’)", MS_MULTIPLE);. Any whitespace is considered part of the tokens in a list. queryByAttributes("municipio", "([municipio] LIKE 'G%')", MS_MULTIPLE); // query error This is close, it’s a logical expression but you’re comparing a number against a string. It should be queryByAttributes("municipio", "(‘[municipio]’ LIKE 'G%')", MS_MULTIPLE); Steve From: mapserver-users [mailto:mapserver-users-boun...@lists.osgeo.org]On Behalf Of Carlos Ruiz Sent: Wednesday, October 11, 2017 1:36 PM To: mapserver-users@lists.osgeo.org; Sven Schroeter <schroe...@netgis.de> Subject: Re: [mapserver-users] php Mapscript queryByAttributes Sven, Doing some tests, queryByAttributes does not accept LIKE nor IN, just single values or simple operators (I am using PostGIS). queryByAttributes("gid", "gid > 100", MS_MULTIPLE) // does not found anything queryByAttributes("gid", "100", MS_MULTIPLE) // found one result queryByAttributes("municipio", "'GUADALAJARA'", MS_MULTIPLE) // found one result queryByAttributes("municipio", "municipio LIKE 'G%'", MS_MULTIPLE) // does not found anything queryByAttributes("gid", "([gid] IN (100, 101))", MS_MULTIPLE); // query error queryByAttributes("municipio", "([municipio] LIKE 'G%')", MS_MULTIPLE); // query error queryByAttributes("gid", "([gid] > 100)", MS_MULTIPLE); // found 25 results MS4W version is 3.1.3 Try to solve it by using FILTER, which allows more complex expressions: $layer->setFilter("gid IN (100, 101)"); Cheers On Wednesday, October 11, 2017, 10:55:17 AM CDT, Sven Schroeter <schroe...@netgis.de> wrote: Hi, Old Server: PHP 5.4.36 with MS 6.4.1 (MS4W) New Server: PHP 5.6.31 with MS 7.0.6 (MS4W 3.2.2) My Test Script: $qfield = 'gid'; $qstring = "gid IN (1,2,3)"; @$datQuery = $query_layer->queryByAttributes($qfield,$qstring,MS_MULTIPLE); Works fine on the old Server, on the new Server no result. I have tried to change the query expression, i.e.: $qstring = "('[gid]' in '1,2,3')"; No result on old server and new... How can I get it run on MS7? Thanks + greetings Sven ************************************** NETGIS GbR Benediktinerstr. 32a 54292 Trier Tel.: 0651-1704731 Fax: 0651-1704733 schroe...@netgis.de www.netgis.de _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/mapserver-users