Pregunto esto por si a alguien le ha pasado algo parecido. A ver tenemos un sistema corriendo sobre PHP 5.2.17 usando como funciones de manejo de la base de datos MSSQL. Bien después de "convertir" el sistema a PHP 5.5.11 usando SQLSRV cuando hago una búsqueda en la barra de búsqueda (que es "interactiva" y muestra las coincidencias conforme vas escribiendo) me ocurre lo siguiente:
- En el sistema "live" que lleva funcionando y testado correctamente años que corre sobre MSSQL me muestra todo OK, por ejemplo busco: LOPE y me sale "Carlos Lope" "Juan Lopera" y "Manuel Lopez" en ese orden porque son los que coinciden vale?
- En el sistema que corre sobre PHP 5.5.11 usando funciones SQLSRV buscamos LOPE y el primer resultado lo oculta, el sistema sabe que existe porque si hago echo numrows sabe que son 3 resultados pero el primero no lo muestra, es como que empieza a recorrer el array en la fila dos, en vez de en la primera. A alguien le ha pasado esto anteriormente o tiene alguna idea de cómo solucionarlo?
Es un tanto extraño y no tengo ni idea de qué puede ocurrir. Si necesitáis trozos de código aquí os pongo dos ejemplos de la misma búsqueda:
ÉSTA NO FUNCIONA:
$result = sqlsrv_query($dbh,"SELECT TOP 20 uniquekey, name FROM table WHERE [uniquekey] in (".$myid.") and (name like '%".$_REQUEST['value']."%') ORDER BY name");
$rows = sqlsrv_fetch_array($result, SQLSRV_FETCH_NUMERIC);
if ($rows > 0)
{
while($row = sqlsrv_fetch_array($result))
{
echo "<a href=\"#\" onclick=\"selectsuggested('".$row{'uniquekey'}."');\">".$row{'name'}."</a>";
}
}
ÉSTA FUNCIONA
$result = mssql_query("SELECT TOP 20 uniquekey, name FROM table WHERE [uniquekey] in (".$myid.") and (name like '%".$_REQUEST['value']."%') ORDER BY name");
if (mssql_num_rows($result) > 0)
{
while($row = mssql_fetch_array($result))
{
echo "<a href=\"#\" onclick=\"selectsuggested('".$row{'uniquekey'}."');\">".$row{'name'}."</a>";
}
}