i have this function that shows an autosuggest in a form:
function searchbyId($params) {
$input = strtolower($params['input']);
$len = strlen($input);
$limit = isset($params['limit']) ? (int) $params['limit']:25;
$items=array();
$sql='SELECT DISTINCT nIdentidad, CONCAT(primerNombre, ' ', segundoNombre, ' ', primerApellido, ' ', segundoApellido) AS nombre FROM tarjeta_indent WHERE nIdentidad LIKE \''.$input.'%\' ORDER BY nIdentidad LIMIT '.$limit;
$resp=db_query($sql);
if($resp && db_num_rows($resp)){
while(list($nIdentidad)=db_fetch_row($resp)) {
//$name=(strpos($name,'@')===false)?$name:'';
$items[] ='{"id": "'.$nIdentidad.'", "value": "'.$nIdentidad.'"}';
}
}
$result= '{"results": ['.implode(", ", $items).']}';
return $result;
}
but only works if i change the query to this:
$sql='SELECT DISTINCT nIdentidad FROM tarjeta_indent WHERE nIdentidad LIKE \''.$input.'%\' ORDER BY nIdentidad LIMIT '.$limit;
How can i do the concat part?
Thanks.
I feel like this is decidedly simple, but you have a syntax error in your concat statement; you're using single quotes to escape strings but the PHP string is defined with single quotes:
How about this?
If I'm right about
db_query
and you're using Drupal, try this instead (for Drupal 7):This would be the Drupal 6 version:
CONCAT will work with strings/varchar, but not with numbers. So if primerNombre and segundNombre are INT data types, CONCAT will fail. Try using the CONVERT function: