Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/05/2011, 23h21   #1
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 56
Points : 31
Points : 31
Par défaut Erreur SQL incompréhensible

Bonjour à tous,
Je travaille en local à l'aide de XAMPP (apache 2.2.14, MySQL 5.1.44, PHP 5.3.1). J'ai une erreur SQL que je n'arrive pas à débugger :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Le SQL :
Code sql :
INSERT INTO `ita_logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '127.0.0.1', '2011-05-28 21:01:02', 1, 9)

Le PHP :
Code :
1
2
3
$now = date('Y-m-d H:i:s');
$isql="INSERT INTO `".PREFIX.'logs'."` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '$ip', '$now', 1, 0)";
$iquery = mysql_query($isql) or die(mysql_error());
La table MySQL :
Code sql :
1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `ita_logs` (
  `logid` int(11) NOT NULL AUTO_INCREMENT,
  `ips` varchar(15) NOT NULL,
  `ldate` datetime NOT NULL,
  `logcount` int(2) NOT NULL,
  `userid` int(11) NOT NULL,
  PRIMARY KEY (`logid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

La requête fonctionne avec ça, elle ajoute bien un enregistrement à la table mais l'erreur bloque l'affichage de la page.
Spaccio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 00h17   #2
Invité régulier
 
Inscription : mars 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 11
Points : 8
Points : 8
Par défaut Bonsoir

Slt,
Qu'as tu dans ton php après ?
m51_2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 00h59   #3
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 56
Points : 31
Points : 31
Salut m51_2000,

J'ai ceci :

Code :
1
2
3
4
if($iquery==true)
{
	return array(true, $logid);
}
Le return est là parce que ça fait partie d'une fonction.
Spaccio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 01h04   #4
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 405
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 405
Points : 531
Points : 531
Envoyer un message via MSN à amoiraud
Salut,
Je pense que tu t'est emmelé les pinceaux entre les quotes et les doubles quotes apres le PREFIX, essaye ca :

Code :
1
2
 
$isql="INSERT INTO `".PREFIX."'logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '$ip', '$now', 1, 0)";
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 01h18   #5
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 56
Points : 31
Points : 31
Salut amoiraud,

C'est vrai que ce serait même plus propre comme ça :
Code :
$isql="INSERT INTO `".PREFIX."logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '$ip', '$now', 1, 0)";
Mais même quand je mets le nom de la table (`ita_logs`) ça produit la même erreur. Je suis sûr que c'est un truc bête mais je n'arrive pas à savoir quoi. D'autant que c'est Mysql qui râle ici alors que la requête exécuter directement par bash passe parfaitement ...
Spaccio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 04h32   #6
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 56
Points : 31
Points : 31
J'ai trouvé à 4h20 du matin, mais j'ai débuggé toute la classe ...
Pour la petite histoire :

La requête est bonne et il n'y a pas de plantage côté MySQL comme avec les premier package 5.1.33. et le format MyISAM.
Code :
INSERT INTO `ita_logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '127.0.0.1', '2011-05-28 21:01:02', 1, 9)
Le PHP :
Code :
1
2
3
4
5
6
$isql="INSERT INTO `".PREFIX."logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '".$ip."', NOW(), 1, 0)";
$iquery = mysql_query($isql) or die(mysql_error());
if($iquery==true)
{
	return array(true, 0);
}
Le problème venait de ce qui j'ai mis en rouge ; je retourne un tableau dont la seconde variable ($logid) était vide (maintenant remplacer par zéro). Or par défaut pour un format INT c'est zéro et non un espace vide. Bref ça n'explique pas pourquoi c'est MySQL qui râle dans ce cas puisque la requête est correcte
Merci à tous pour m'avoir porter attention
Spaccio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h04.


 
 
 
 
Partenaires

Hébergement Web