Hi All I am using Drupal 6.20.
I have constructured below query.
str = *SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "%sip%") ORDER BY node.lft*
Then I call db_query() API.
It did not return the expected records.
On debugging, looks the query went as
*SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.nameLIKE "ip%") ORDER BY node.lft *
Probably db_query API , considered %s as a string placeholder and removed from query string.
Then I changed the query to
*SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.nameLIKE " %%sip%") ORDER BY node.lft*
Above query returns expected records.
My question is , when a token starts with "s", we will be facing above issue. What is the best way to resolve it.
Can I follow the mechanism, where tokens starting with "s", will be changed to "%s" , so that in query the token will look like "%%s". Or do yo see any issues with this approach.
Regards Austin
The problem is not the "s." You wanted a "%" to be in the query. The corrects way to do that, as the API doc states, is with "%%". That's why it worked when you changed it. Nancy Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.
________________________________
From: Austin Einter str = SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "%sip%") ORDER BY node.lft
On debugging, looks the query went as SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "ip%") ORDER BY node.lft
Then I changed the query to
SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "%%sip%") ORDER BY node.lft Above query returns expected records.
My question is , when a token starts with "s", we will be facing above issue. What is the best way to resolve it.
Try this:
db_query('SET @select_ip="%s"', db_escape_string($ip)); db_query('SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE CONCAT_WS( "", "%%", @select_ip, "%%" )") ORDER BY node.lft')
Liviu.
On Fri, May 20, 2011 at 4:46 AM, Ms. Nancy Wichmann nan_wich@bellsouth.net wrote:
The problem is not the "s." You wanted a "%" to be in the query. The corrects way to do that, as the API doc states, is with "%%". That's why it worked when you changed it.
Nancy
Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.
From: Austin Einter
str = SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "%sip%") ORDER BY node.lft
On debugging, looks the query went as SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "ip%") ORDER BY node.lft
Then I changed the query to
SELECT name, id, lft, rgt FROM resubmt_skill_ids AS node WHERE ( node.name LIKE "%%sip%") ORDER BY node.lft Above query returns expected records.
My question is , when a token starts with "s", we will be facing above issue. What is the best way to resolve it.
-- [ Drupal support list | http://lists.drupal.org/ ]