On Sun, Apr 10, 2011 at 8:35 PM, Austin Einter austin.einter@gmail.com wrote:
Hi All On further exploring..
$skill = "PHP, TML, HTML"; $pieces = explode(",", $skill);
$query_string = 'SELECT name, email, phone, yrsofexp FROM {resubmt_table} ' . 'WHERE resubmt_table.uid IN (SELECT DISTINCT uid FROM {resubmt_users_skills} ' . 'WHERE resubmt_users_skills.skillid IN(SELECT skillid FROM {resubmt_skills} ' . 'WHERE resubmt_skills.skillname IN ( ' . db_placeholders($pieces, 'varchar') . ')))';
drupal_set_message($query_string); $query = db_query($query_string);
The output prints as
SELECT name, email, phone, yrsofexp FROM {resubmt_table} WHERE resubmt_table.uid IN (SELECT DISTINCT uid FROM {resubmt_users_skills} WHERE resubmt_users_skills.skillid IN(SELECT skillid FROM {resubmt_skills} WHERE resubmt_skills.skillname IN ( '%s','%s','%s')))
But I do not see , pieces[0], pieces[1] and pieces[2] etc in query string. Is it fine or I am doing something wrong here.
You are close, but you need one last piece:
$query_string = 'SELECT name, email, phone, yrsofexp FROM {resubmt_table} ' . 'WHERE resubmt_table.uid IN (SELECT DISTINCT uid FROM {resubmt_users_skills} ' . 'WHERE resubmt_users_skills.skillid IN(SELECT skillid FROM {resubmt_skills} ' . 'WHERE resubmt_skills.skillname IN ( ' . db_placeholders($pieces, 'varchar') . ')))';
drupal_set_message($query_string); $query = db_query($query_string, $pieces); ^^^^^^^^^^^^^^^^^^
The $pieces as an argument to $db_query should get it done.
Also, for debugging sql I love using the Devel module and enabling query logging and printing the query log. It shows the exact query without having to do a drupal_set_message and after any argument substitution takes place.
Cheers, Greg