Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fatal error: Uncaught PDOException: SQLSTATE[42000

Sujet résolu
    28 novembre 2021 à 15:02:11

    Mon erreur :

    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 MariaDB server version for the right syntax to use near ''tk' WHERE id = '28'' at line 1 in /storage/ssd5/947/18007947/public_html/questionnaire/index.php:59 Stack trace: #0 /storage/ssd5/947/18007947/public_html/questionnaire/index.php(59): PDOStatement->execute(Array) #1 /storage/ssd5/947/18007947/public_html/questionnaire/index.php(153): getWinner() #2 {main} thrown in /storage/ssd5/947/18007947/public_html/questionnaire/index.php on line 59

    Voilà le morceau de code associé à cette erreur :

    $winner = getDB()->prepare('SELECT winner FROM ? WHERE id = ?');
    $winner->execute([getTableName(), getDay()]);

    et les fonctions associés à ce morceau :

    function getDB(){
    	return new PDO('mysql:host=localhost;dbname=id18007947_calendar;charset=utf8', 'id18007947_shemcel', '3?uG~lh0JIS=P$99', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    }
    function getTableName(){
    	if (getTableId() == 0) {
    		return 'tk';
    	}else{
    		return 'hggsp3';
    	}
    }
    function getDay(){
    	return (int) getdate()["mday"];
    }
    if ($_GET['type'] == 0) {
    	function getTableId(){
    		return 0;
    	}
    
    }elseif ($_GET['type'] == 1) {
    	function getTableId(){
    		return 1;
    	}
    
    }else{
    	header('*/');
    	die();
    }

    Je n'arrive pas à comprendre d'où viens l'erreur, ma requête SQL semble pourtant correcte ...



    -
    Edité par SHEMCEL 28 novembre 2021 à 15:03:10

    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2021 à 15:24:11

      Bonsoir,

      Tu ne peux pas binder le nom de la table, il faut passer par la concaténation sans oublier de faire attention du coup aux injections sql

      • Partager sur Facebook
      • Partager sur Twitter

      Fatal error: Uncaught PDOException: SQLSTATE[42000

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown