Rechercher : dans
Par :

{MySQL} mysql_num_rows(): supplied argument...

Dernière réponse le 12 oct 2009 à 11:58:50 Linukcs, le 12 oct 2009 à 11:21:54 
 Signaler ce message aux modérateurs

Bonjour,

Afin de livrer une commande, l'utilisateur doit entrer son nom, prénom et adresse. Ceux-ci doivent êtres traités dans la base de données MySQL.
Seulement pour éviter les doublons, je dois tester si le client est déjà existant.

Mais y'a une erreur :
mysql_num_rows(): supplied argument is not a valid MySQL result resource in **mask** on line 22
NOTE : j'ai mis un test d'erreur derrière la requête MySQL à la fin de ma requête... aucune erreur ne ressort :(

J'ai du mal à repérer d'où vient le problème, donc je sollicite votre aide.
Voici le code en question:
[code]
Traitement de votre commande....

<?php

$nom = $POST['nom'];
$prenom = $POST['prenom'];
$adress = $POST['adress'];


$db=mysql_connect("10.187.122.4",**mask**,**mask**);
mysql_select_db("levisse_b", $db);

$clientsqltest = "SELECT * FROM levisse_b.`DBClient` D
WHERE D.`nom` = '".$nom. "'
AND D.`prenom` = '".$prenom."'
AND D.`adresse` = '".$adress."'
ORDER BY `idclient` ASC ";
$clientsqltestrq = mysql_query($clientsqltest) or die(mysql_error()) ;
$clientsqladd = "INSERT INTO client ('','".$nom."','".$prenom."','".$adress."')";

echo mysql_error() ;
if (mysql_num_rows($clientsqltest)<1) // Voilà le lieu présumé de l'erreur
{
mysql_query($clientsqladd);
// quote next not for debug mode
echo 'Nouveau client';
}
// quote next not for debug mode
else echo 'Client déjà existant';
mysql_free_result($clientsqltestrq);
mysql_close($db);
?>
/code

Merci d'avance de vos réponses!

Configuration: Windows XP
Firefox 3.5.3

Meilleures réponses pour « {MySQL} mysql_num_rows(): supplied argument... » dans :
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
Réinitialiser le mot de passe root de MySQL VoirQue ce soit lors de la première installation ou après la perte du mot de passe principal de MySQL, il est nécessaire de pouvoir modifier le mot de passe administrateur (root) de MySQL. Vous avez perdu le mot de passe root de MySQL ? Pour pouvoir...
MySQL – Optimisation VoirL’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...
Administration de MySQL VoirLa base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

le père, le 12 oct 2009 à 11:40:22
  • +2

Bonjour

Normal que ça ne marche pas. Tu fais le test sur la requête ($clientsqltest) au lieu du résultat ($clientsqltestrq)

Répondre à le père

2

Linukcs, le 12 oct 2009 à 11:52:40

RE!

En effet, en testant le résultat, le message d'erreur disparaît.
Je comprends donc pas pourquoi on m'a dit de tester la requête :D je me souviendrai d'utiliser le résultat.

Merci papa ;)

Répondre à Linukcs

3

 le père, le 12 oct 2009 à 11:58:50

on m'a dit
N'écoute pas ce qu'on te dit et lis la doc. C'est là que tu apprendras quelque chose.
mysql_num_rows travaille sur le résultat d'une requête, ce qui est d'ailleurs le bon sens même :
http://fr.php.net/manual/fr/function.mysql-num-rows.php

Répondre à le père