Comment Obtenir Le nombre ou Le Nombre De Lignes Dans Un Jeu de résultats en PHP En utilisant la Connexion ODBC?
Alors que j'ai créer une page web dans Mon application web PHP, Ma Connexion fonctionne bien mais Lorsque je veux obtenir le nombre de lignes de l'Instruction SELECT que j'ai utilisé dans ma requête, Il me donne -1 !! bien que mon jeu de résultats a environ 10 lignes.
Je voudrais obtenir le nombre réel de lignes de jeu de résultats.
J'ai cherché sur le Manuel PHP & de la documentation mais je ne trouve pas un moyen direct comme une fonction de Comptage ou quelque chose comme ça.
Je me demande si je dois faire un Count(*) Instruction SQL dans une autre requête et de l'attacher à ma Connexion pour obtenir le nombre de Lignes ?
Ce que quelqu'un connaît un moyen facile et directe manière d'obtenir que ?
la odbc_num_rows fonction donne toujours -1 au résultat donc je ne peux pas obtenir le nombre réel de lignes.
Mon la langue de Programmation PHP et Mon Moteur de Base de données Sybase et La Manière de se connecter à une Base de données ODBC.
Vous ici le Code que j'ai utilisé:-
<?PHP
//PHP Code to connect to a certain database using ODBC and getting information from it
//Determining The Database Connection Parameters
$database = 'DatabaseName';
$username = 'UserName';
$password = 'Password';
//Opening the Connection
$conn = odbc_connect($database,$username,$password);
//Checking The Connection
if (!$conn)
{
exit("Connection Failed: " . $conn);
}
//Preparing The Query
$sql = "SELECT * FROM Table1 WHERE Field1='$v_Field1'";
//Executing The Query
$rs = odbc_exec($conn,$sql);
//Checking The Result Set
if (!$rs)
{
exit("Error in SQL");
}
echo "<p align='Center'><h1>The Results</h1></p>";
while ( odbc_fetch_row($rs) )
{
$field1 = odbc_result($rs,1);
$field2 = odbc_result($rs,2);
$field3 = odbc_result($rs,3);
echo "field1 : " . $field1 ;
echo "field2 : " . $field2 ;
echo "field3 : " . $field3 ;
}
$RowNumber = odbc_num_rows($rs);
echo "The Number of Selected Rows = " . $RowsNumber ;
//Closing The Connection
odbc_close($conn);
?>
Merci pour votre Aide 🙂
OriginalL'auteur TopDeveloper | 2010-11-07
Vous devez vous connecter pour publier un commentaire.
odbc_num_rows
semble être fiable pour INSÉRER, mettre à JOUR et de SUPPRIMER des requêtes.La manuel dit:
un moyen de contourner ce comportement est de faire un
COUNT(*)
dans SQL à la place. Voir ici pour un exemple.Merci pour l'Aide même si Aucune de ces réponses résolu ma question, mais je fais une autre solution en faisant deux ensembles de résultats, l'un pour stocker mes résultats et l'autre pour stocker le nombre ou le nombre de lignes et cela a bien fonctionné.
OriginalL'auteur Pekka 웃
dans php.net:
Le moyen le plus facile de compter les lignes dans un odbc resultset où le conducteur retourne -1 est de laisser SQL faire le travail:
OriginalL'auteur Ramin Rezazadeh
Sur quelle base, ne vous attendez
odbc_num_rows
pour revenir à autre chose que de -1 ?Nous avons le fait dans les manuels, qui ODBC ne prend pas en charge
@@ROWCOUNT /odbc_num_rows
. Donc, il n'y a aucune raison de s'attendre à ce qu'il "devrait" retour rien d'autre que ce qui est documenté, -1 en toutes circonstances.Même si vous avez utilisé Sybase directement (au lieu de via ODBC), vous avez le même "problème".
odbc_num_rows
retourne@@ROWCOUNT
, qui est les lignes insérées mis à jour, supprimé par la commande précédente. -1 est la bonne, documenté valeur, si la commande précédente est pas insert/update/delete.Il n'a rien à voir avec des lignes dans une table.
Utiliser un autre lot, et de la documenté méthodes pour obtenir des lignes dans une table, et de charger la valeur dans une variable:
ou
Ensuite interroger le tableau résultat, pour obtenir la variable, pas
odbc_num_rows
, qui continuera de retour -1.OriginalL'auteur PerformanceDBA