Probleme de Syntaxe erreur: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You
Bonjour,
Depuis que j'ai changé les commandes PHP 5 pour les rendrent compatible PHP 7, ça ne fonctionne plus aussi bien qu'avant et je me casse la tête à comprendre pourquoi...
Le but final, c'est pour afficher des messages en boucle sur un écran dédié.
Tous fonctionne bien, sauf quand c'est différente condition sont réunies :
Je met hors ligne ou que je supprime le dernier messages de la liste et qu'il soit affiché à ce même moment.
et n'affiche pas le message suivant, par contre j'ai le droit à un joli petit mot d'amour.
Citation:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 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 in /var/www/html/ecraninfo/index.php:83 Stack trace: #0 /var/www/html/ecraninfo/index.php(83): PDO->query(' select * from ...') #1 {main} thrown in /var/www/html/ecraninfo/index.php on line 83
Toute aide et la bien venu, merci
le fichier original en PHP5
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
//------------------------------------------------------------------------------------------------------------
// lire le nombre d'éléments contenu dans la base
//------------------------------------------------------------------------------------------------------------
$rsCount = mysql_query("select count(*) as nbElement from contenu where id AND online = 1 AND permanent = 1"); // Je determine Pour permanent =1
mysql_select_db($database_conMsg, $conMsg);
$row_rsCount = mysql_fetch_assoc($rsCount);
$query_nb_id = $pdo_conMsg->query('SELECT count(*) as nb_id FROM contenu where id AND online = 1 AND permanent = 2 AND date_debut <= now() AND now() <= date_fin'); // Je determine Pour permanent =2
$fetch_nb_id = $query_nb_id->fetch();
// Conexion a la database
mysql_select_db($database_conMsg, $conMsg);
// On récupère tout le contenu de la table params
//Je fait une requette dans la table params
$query_mysql_Planification = mysql_query("SELECT * FROM params WHERE p_key = 'mysql_Planification'");
// je Récupére la reponse
$fetch_mysql_Planification = mysql_fetch_assoc($query_mysql_Planification);
//echo $fetch_mysql_Planification['Mysql_nb_stocke'];
//j'affiche le contenu avec la commande ci-dessous
//echo $row_rsCount['nbElement']; echo ' ET '; echo $fetch_nb_id['nb_id'] ;
// on vérifie le nombre d'éléments :
// si c'est = 0 alors on affiche un message (l'heure par exemple) et puis en boucle
// si c'est > 0 alors on affiche un élément selon le numero d'ordre passé en paramètre et on boucle selon la durée
// les differents état de ONLINE et permanent == 2
$online0 = $row_rsCount['nbElement'] == 0 ;
$permanent20 = $fetch_nb_id['nb_id'] == 0 ;
$online1 = $row_rsCount['nbElement'] >= 1 ;
//$permanent21 = $fetch_nb_id['nb_id'] >= 1 ;
if ($online0 == $permanent20 AND $online1 == 0)
{
include ('horloge.php');
die();
}
else
{
// maintenant que le nombre d'éléments est > 0 alors on traite selon le rang
// si le numéro est passé en paramètre, on fait une vérification sur ce numéro
// ds tous les cas de figure, on vérifie si le message doit être affiché en permanence (champs permanent = 1)
// ou alors, si permanent = 2 : donc il faut que la date soit comprise entre date de debut et date de fin
// notre requête de recherche doit inclure ce critère pour trouver le prochaine no de rang : donc le prochain message
$sql = " and ((permanent = 1) or (permanent = 2 and date_debut <= now() and now() <= date_fin)) ";
if (isset($_GET['rang']) && ($_GET['rang'] != ""))
{
// on vérifie si le numéro n'est pas le plus petit, car dans ce cas, il faut passer au plus grand (boucler)
$rsMinMax = mysql_query("select min(rang) as mini, max(rang) as maxi from contenu where online = 1" . $sql);
$row_rsMinMax = mysql_fetch_assoc($rsMinMax);
// si on est au plus petit on passe comme paramètre le plus grand
if ($_GET['rang'] == $row_rsMinMax['maxi'])
{
$param = $row_rsMinMax['mini'];
}
// sinon on passe le suivant dans l'ordre croissant. Pour mettre en décroissant changer le symbole ">" en "<" et rajouter "DESC" entre rang et limit 1
else
{
$query = "select rang from contenu where online = 1 " . $sql . " and rang > " . $_GET['rang'] . " order by rang limit 1";
$rsNext = mysql_query($query);
$row_rsNext = mysql_fetch_assoc($rsNext);
$param = $row_rsNext['rang'];
}
mysql_free_result($rsMinMax);
}
// si le rang n'est pas passé en paramètre on affiche l'élément ayant le rang le + grand
else
{
$rsMaxi = mysql_query("select max(rang) as maxi from contenu where online = 1 " . $sql);
$row_rsMaxi = mysql_fetch_assoc($rsMaxi);
$param = $row_rsMaxi['maxi'];
mysql_free_result($rsMaxi);
}
// maintenant que le paramètre est déterminé on exécute la requête de selection
$sql = "";
$sql .= " select * from contenu where rang = " . $param; // online = 1 and
$rsElement = mysql_query($sql);
$row_rsElement = mysql_fetch_assoc($rsElement);
} |
Et le fichier modifier en PHP7
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
//------------------------------------------------------------------------------------------------------------
// lire le nombre d'éléments contenu dans la base
//------------------------------------------------------------------------------------------------------------
$rsCount = $pdo_conMsg->query("select count(*) as nbElement from contenu where id AND online = 1 AND permanent = 1"); // Je determine Pour permanent =1
$row_rsCount = $rsCount->fetch(PDO::FETCH_ASSOC);
$query_nb_id = $pdo_conMsg->query('SELECT count(*) as nb_id FROM contenu where id AND online = 1 AND permanent = 2 AND date_debut <= now() AND now() <= date_fin'); // Je determine Pour permanent =2
$fetch_nb_id = $query_nb_id->fetch();
// On récupère tout le contenu de la table params
//Je fait une requette dans la table params
$query_mysql_Planification = $pdo_conMsg->query("SELECT * FROM params WHERE p_key = 'mysql_Planification'");
// je Récupére la reponse
// $fetch_mysql_Planification = mysql_fetch_assoc($query_mysql_Planification);
$fetch_mysql_Planification = $query_mysql_Planification->fetch(PDO::FETCH_ASSOC);
//echo $fetch_mysql_Planification['Mysql_nb_stocke'];
//j'affiche le contenu avec la commande ci-dessous
//echo $row_rsCount['nbElement']; echo ' ET '; echo $fetch_nb_id['nb_id'] ;
// on vérifie le nombre d'éléments :
// si c'est = 0 alors on affiche un message (l'heure par exemple) et puis en boucle
// si c'est > 0 alors on affiche un élément selon le numero d'ordre passé en paramètre et on boucle selon la durée
// les differents état de ONLINE et permanent == 2
$online0 = $row_rsCount['nbElement'] == 0 ;
$permanent20 = $fetch_nb_id['nb_id'] == 0 ;
$online1 = $row_rsCount['nbElement'] >= 1 ;
//$permanent21 = $fetch_nb_id['nb_id'] >= 1 ;
if ($online0 == $permanent20 AND $online1 == 0)
{
include ('horloge.php');
die();
}
else
{
// maintenant que le nombre d'éléments est > 0 alors on traite selon le rang
// si le numéro est passé en paramètre, on fait une vérification sur ce numéro
// ds tous les cas de figure, on vérifie si le message doit être affiché en permanence (champs permanent = 1)
// ou alors, si permanent = 2 : donc il faut que la date soit comprise entre date de debut et date de fin
// notre requête de recherche doit inclure ce critère pour trouver le prochaine no de rang : donc le prochain message
$sql = " and ((permanent = 1) or (permanent = 2 and date_debut <= now() and now() <= date_fin)) ";
if (isset($_GET['rang']) && ($_GET['rang'] != ""))
{
// on vérifie si le numéro n'est pas le plus petit, car dans ce cas, il faut passer au plus grand (boucler)
$rsMinMax = $pdo_conMsg->query("select min(rang) as mini, max(rang) as maxi from contenu where online = 1" . $sql);
$row_rsMinMax = $rsMinMax->fetch(PDO::FETCH_ASSOC);
// si on est au plus petit on passe comme paramètre le plus grand
if ($_GET['rang'] == $row_rsMinMax['maxi'])
{
$param = $row_rsMinMax['mini'];
}
// sinon on passe le suivant dans l'ordre croissant. Pour mettre en décroissant changer le symbole ">" en "<" et rajouter "DESC" entre rang et limit 1
else
{
$query = "select rang from contenu where online = 1 " . $sql . " and rang > " . $_GET['rang'] . " order by rang limit 1";
$rsNext = $pdo_conMsg->query($query);
$row_rsNext = $rsNext->fetch(PDO::FETCH_ASSOC);
$param = $row_rsNext['rang'];
}
($rsMinMax)->closeCursor();;
}
// si le rang n'est pas passé en paramètre on affiche l'élément ayant le rang le + grand
else
{
$rsMaxi = $pdo_conMsg->query("select max(rang) as maxi from contenu where online = 1 " . $sql);
$row_rsMaxi = $rsMaxi->fetch(PDO::FETCH_ASSOC);
$param = $row_rsMaxi['maxi'];
($rsMaxi)->closeCursor();;
}
// maintenant que le paramètre est déterminé on exécute la requête de selection
$sql = "";
$sql .= " select * from contenu where rang = " . $param; // online = 1 and
$rsElement = $pdo_conMsg->query($sql)
$row_rsElement = $rsElement->fetch(PDO::FETCH_ASSOC);
} |