Problème de syntaxe dans une requête MySQL

Résolu/Fermé
polarbird Messages postés 105 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 16 décembre 2023 - 7 sept. 2014 à 20:53
polarbird Messages postés 105 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 16 décembre 2023 - 8 sept. 2014 à 20:46
Bonsoir,
Je rencontre actuellement un problème avec une requête MySQL.En effet,j'obtiens ce message : "
You have an error in your [/contents/1062-le-langage-sql SQL] syntax; [/download/telecharger-34065664-check-drive check] the manual that corresponds to your MySQL server version for the right syntax to use near '"0","10"' [/contents/1147-introduction-aux-systemes-unix at] [http://www.commentcamarche.net/download/telecharger-34098305-line line] 1
".
Ce message est aussi associé au message "Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in E:\wamp\www\bk_forum\voir_sujet.php on line 160".

Je n'arrive pas à résoudre ce problème,bien que j'ai déjà essayé de remanier ma requête SQL plusieurs fois.

Voici l'intégralité de mon code : toutes les variables utilisées dans ma requête ont bien été déclarées.
<?php
session_start();
include 'pdo.inc.php';
include 'activite.inc.php';
?>
<?php
include 'db.inc.php';
$sql3 = 'SELECT titre,locked FROM messages WHERE cat="'.$_GET['cat'].'" AND id="'.$_GET['id'].'" ';
$rst = mysql_query($sql3);
$abc = mysql_fetch_array($rst);
?>
<[/contents/498-html-langage html]>
<head>
<meta charset="utf-8" />
<title><?php echo $abc['titre']; ?> • Forum • barakuda.olympe.in</title>
<link rel="stylesheet" type="text/css" href="style2.css" />
<!-- barre fixe start -->

<!-- barre fixe stop -->
<?php include 'fancybox.php'; ?>
</head>
<body>
<center><a href="index.php"><img src="logo3.png" title="Forum" alt="Forum" /></a></center>
<div id="barre">
<span class="left">Index > <a href="voir_categorie.php?cat=<?php echo $_GET['cat']; ?>">Voir catégorie</a> > Voir sujet</span>
<?php
if(!isset($_SESSION['pseudo'])) {
echo '<span class="right"><a href="login.php">Connexion</a> • <a href="inscription.php">Inscription</a></span>';
}
else
{
?>
<?php
include 'db.inc.php';
$test_mp = mysql_query('SELECT COUNT(*) FROM mp WHERE id_destinataire="'.$_SESSION['id'].'" AND ok="0"');
$test_mp2 = mysql_fetch_row($test_mp);
$mp_non_lu = $test_mp2[0];
?>
<?php include 'menu.php'; ?>
<?php
}
?>

</div>
<center>
<?php
if($abc['locked'] == 0){
if(isset($_SESSION['pseudo'])) {
$testa = mysql_query('SELECT COUNT(*) FROM messages WHERE id="'.$_GET['id'].'" AND cat="'.$_GET['cat'].'"');
$testb = mysql_fetch_row($testa);
$testc = $testb[0];
if($testc != 0){
?>
<a href="poster.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>" class="btn1">Répondre</a>
<?php
}
}
}
?>
<?php
if(isset($_SESSION['auth'])){
if($_SESSION['auth'] > 1){
if($_SESSION['ban'] == 0){
?>
<a href="lock.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>" class="btn1">
<?php
switch($abc['locked']){
case 1:
echo 'Déverrouiller';
break;
case 0:
echo 'Verrouiller';
break;
}
?>
</a>
<?php
}
}
}
?>
<?php
if($abc['locked'] == 0){
if(isset($_SESSION['pseudo'])) {
if($_SESSION['auth'] > 1){
$testa = mysql_query('SELECT COUNT(*) FROM messages WHERE id="'.$_GET['id'].'" AND cat="'.$_GET['cat'].'"');
$testb = mysql_fetch_row($testa);
$testc = $testb[0];
if($testc != 0){
?>
<a href="del_sujet.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>" class="btn1">Supprimer</a>
<?php
}
}
}
}
?>
</center>
<center>
<h1>
<?php
switch($abc['locked']){
case 1:
echo '[VERROUILLÉ]';
break;
case 0:
echo '';
break;
}
?>
<?php echo $abc['titre']; ?>
</h1>
</center>
<!-- PAGINATION -->
<?php
//Fonction listant les pages
function get_list_page($page, $nb_page, $link, $nb = 2){
$list_page = array();
for ($i=1; $i <= $nb_page; $i++){
if (($i < $nb) OR ($i > $nb_page - $nb) OR (($i < $page + $nb) AND ($i > $page -$nb)))
$list_page[] = ($i==$page)?'<strong>'.$i.'</strong>':'<a href="'.$link.'&page='.$i.'">'.$i.'</a>'; 
else{
if ($i >= $nb AND $i <= $page - $nb)
$i = $page - $nb;
elseif ($i >= $page + $nb AND $i <= $nb_page - $nb)
$i = $nb_page - $nb;
$list_page[] = '...';
}
}
$print= implode('-', $list_page);
return $print;
}
?>
<?php
if(isset($_GET['page'])){
$page = mysql_real_escape_string($_GET['page']);
}else{
$page = 1;
}
$requete1 = mysql_query('SELECT COUNT(*) FROM messages WHERE cat="'.$_GET['cat'].'" AND id="'.$_GET['id'].'"');
$requete2 = mysql_fetch_row($requete1);
$requete3 = $requete2[0];
$limite = 10;
$resultats = ceil($requete2[0]/$limite);
$nb_page = $resultats;
$debut = $page * $limite;
echo $debut;
echo $limite;
$cat2 = $_GET['cat'];
$id2 = $_GET['id'];
echo '<p>Page : ';
echo get_list_page($page, $nb_page, "http://localhost/bk_forum/voir_sujet.php?cat=$cat2&id=$id2");
echo'</p>';
?>
<!-- PAGINATION -->
<table>
<?php
$sql14 = mysql_query('SELECT * FROM messages WHERE cat="'.$_GET['cat'].'" AND id="'.$_GET['id'].'" ORDER BY message_id ASC LIMIT "'.$debut.'","'.$limite.'"');

while($data = mysql_fetch_array($sql14)or die(mysql_error()))
{
?>
<?php
$sql = 'SELECT * FROM membres WHERE id="'.$data['auteur_id'].'" ';
$result = mysql_query($sql);
$dd = mysql_fetch_array($result);
?>
<!-- MESSAGE -->
<!-- MESSAGE -->
<!-- MESSAGE -->
<tr>
<td class="auteur_info">
<center><p><a class="auteur_link" href="voir_profil.php?id=<?php echo $data['auteur_id']; ?>"><?php echo $dd['pseudo']; ?></a><br /><img src="<?php echo $dd['avatar']; ?>" title="Avatar" alt="Avatar" width="100px" height="100px" style="margin:10px;" /></p></center>
<p><?php
switch ($dd['auth']){
case 1:
echo 'Membre';
break;
case 2:
echo 'Modérateur';
break;
case 3:
echo 'Administrateur';
break;
}
?><br />
<?php echo $dd['pays']; ?><br />
<?php
$post1 = mysql_query('SELECT COUNT(*) FROM messages WHERE auteur_id="'.$dd['id'].'"');
$post2 = mysql_fetch_row($post1);
$post3 = $post2[0];
?>
<?php
if($post3 <= 1){
echo $post3;
echo ' message';
}else{
echo $post3;
echo ' messages';
}
?>
</p>
</td>
<td id="msg<?php echo $data['message_id']; ?>" class="msg">
<div class="contenu_msg">
<span class="date_post"><?php echo date ('d-m-Y' ,$data['timestamp']); ?> à <?php echo date ('H:i' ,$data['timestamp']); ?></span>
<?php
$message = $data['message'];

echo $message;
?>
<br />
<?php
if(!empty($dd['signature'])){
echo '<hr>';
echo $dd['signature'];
}
?>
</div>
</td>
</tr>
<tr>
<td class="td_buttons">
<?php
if(isset($_SESSION['auth'])){
if($_SESSION['auth'] > 1 || $_SESSION['id'] == $data['auteur_id']){
?>
<a href="del_msg.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>&message_id=<?php echo $data['message_id']; ?>" title="Supprimer ce message"><img src="icons/cross.png" /></a>
<?php
}
}
?>
<?php
if(isset($_SESSION['id'])){
if($_SESSION['id'] == $data['auteur_id']){
?>
<a href="maj_msg.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>&message_id=<?php echo $data['message_id']; ?>" title="Modifier ce message"><img src="icons/page_white_edit.png" /></a>
<?php
}
}
?>
<?php
if(isset($_SESSION['id'])){
?>
<a href="signal.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>&message_id=<?php echo $data['message_id'];?>" title="Signaler ce message"><img src="icons/flag_red.png" /></a>
<a href="reponse.php?cat=<?php echo $_GET['cat']; ?>&id=<?php echo $_GET['id']; ?>&message_id=<?php echo $data['message_id'];?>" title="Répondre en citant ce message"><img src="icons/comments.png" /></a>
<?php
}
?>
</td>
<td class="contact">
<?php
if(!empty($dd['skype'])){
echo '<a href="skype:';
echo $dd['skype'];
echo '?chat';
echo '" title="';
echo $dd['skype'];
echo '">';
echo 'Skype';
echo '</a> ';
} 
?>
<?php
if(!empty($dd['siteweb'])){
echo '<a href="';
echo $dd['siteweb'];
echo '" title="';
echo $dd['siteweb'];
echo '" target="_blank">';
echo 'Site web';
echo '</a>';
} 
?>
</td>
</tr>
<?php
}
mysql_close();
?>
</table>
</body>
</html>


D'avance je vous remercie de votre aide,
Cordialement,
polarbird

3 réponses

Utilisateur anonyme
7 sept. 2014 à 22:11
Bonsoir

Tu as mis des " autour des paramètres du LIMIT de ta requête.
Or, ces paramètres sont obligatoirement des constantes numériques et ne peuvent pas être des chaînes :
LIMIT 0,10 est correct
LIMIT "0","10" est incorrect
MySQL fait le changement de type dans la plupart des cas, mais pas pour le LIMIT.
1
Bonsoir,

Commençons par voir si tes requetes SQL sont bien formées. La ligne 8 par exemple

$sql3 = 'SELECT titre,locked FROM messages WHERE cat="'.$_GET['cat'].'" AND id="'.$_GET['id'].'" ';
echo $sql3;
die();


Et voyons ce que ça donne

Cdt


En informatique 99% des problèmes se situent entre le fauteuil et le clavier
0
polarbird Messages postés 105 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 16 décembre 2023 1
8 sept. 2014 à 20:46
Résolu !
Voilà ma requête qui marche :
[/contents/1068-sql-commande-select SELECT] * FROM messages WHERE cat="'.$_GET['cat'].'" AND id="'.$_GET['id'].'" ORDER BY message_id ASC LIMIT '.$debut.','.$limite.'

Merci à ludobabs et à le père. pour votre aide !
0