Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema su PDO::execute

    Ciao a tutti ho un problema sull'uso del metodo execute.

    Questo il codice:
    Codice PHP:
    $this->pdo = new PDO("mysql:host=$host;dbname=$database"$username$password);
    $query $this->pdo->prepare('SELECT :fields FROM :table');
    $query->bindParam(':fields',$fields,PDO::PARAM_STR);
    $query->bindParam(':table',$table,PDO::PARAM_STR);
    if (
    $query->execute()) {
        
    $this->data $query->fetchAll(PDO::FETCH_OBJ);
        
    var_dump($this->data);

    L'execute mi restituisce false.

    Se invece sostituisco un solo parametro...
    Codice PHP:
    $this->pdo = new PDO("mysql:host=$host;dbname=$database"$username$password);
    $query $this->pdo->prepare('SELECT :fields FROM mytable');
    $query->bindParam(':fields',$fields,PDO::PARAM_STR);
    if (
    $query->execute()) {
        
    $this->data $query->fetchAll(PDO::FETCH_OBJ);
        
    var_dump($this->data);

    Ottengo...
    codice:
    array(30) { [0]=>  object(stdClass)#4 (1) { ["pagetitle"]=>  string(9) "pagetitle" } [1]=>  object(stdClass)#5 (1) { ["pagetitle"]=>  string(9) "pagetitle" } [2]=>  object(stdClass)#6 (1) { ["pagetitle"]=>  string(9) "pagetitle" }
    Se non sostituisco niente...
    Codice PHP:
    $this->pdo = new PDO("mysql:host=$host;dbname=$database"$username$password);
    $query $this->pdo->prepare('SELECT field1 FROM mytable');
    if (
    $query->execute()) {
        
    $this->data $query->fetchAll(PDO::FETCH_OBJ);
        
    var_dump($this->data);

    Ottengo...
    codice:
    array(30) { [0]=>  object(stdClass)#4 (1) { ["pagetitle"]=>  string(8) "Homepage" } [1]=>  object(stdClass)#5 (1) { ["pagetitle"]=>  string(37) "Integrazione di un plugin per YouTube" } [2]=>  object(stdClass)#6 (1) { ["pagetitle"]=>  string(30) "La kuBOX al MIA 2009 di Rimini" }
    Che è quanto vorrei ottenere usando però bindParam come nel primo caso.

    Dove sbaglio?
    Grazie.
    Simone

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Non puoi usare un prepared statement per inserire il nome della tabella dinamicamente. Tutti i parametri vengono verificati/processati secondo del loro contenuto, nel caso di una stringa ci sono gli apostrofi che sono agguinti, quindi diventerebbe

    codice:
    SELECT 'field1' FROM 'mytable'
    che non è uno statement valido.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Grazie neroux,
    quindi il prepare statement è impiegabile solo nella definizione della clausola where?

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Principalmente sì , in genere le variabili di un prepared statement si possono solo usare per valori e non per dati tecnici come nomi di campi o colonne.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.