Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [PDO] Warning: PDOStatement::execute() ....

    buongiorno a tutti!

    sto cercando di eseguire una ricerca tramite form dentro una tabella del db però mi ritrovo a dover combattere contro questo errore:

    Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/mhd-01/www.francescopassanante.com/htdocs/tattoonia/search.php on line 6
    il codice che fa riferimento a questo script errato è questo:

    codice:
    <?php
    if(isset($_POST['cerca'])){
      $col = 'mysql:host=*********;dbname=************';
      $db = new PDO($col , '******', '*****');
      $sql = $db->prepare("SELECT * FROM utente WHERE :campo_cerca IN (nazione,citta,provincia)");
      $sql->execute(array($_POST['campo_cerca']));
      $res_search=$sql->fetchAll();
      foreach($res_search as $row){
        echo "{$row['nome']}";
        echo "<br>";
        echo "{$row['cognome']}";
      }
    }
    la linea 6 che è quella segnalata è ovviamente quella dell'execute, secondo voi quale potrebbe essere il problema?

    vi serve pure la parte di codice relativa al form che passa il parametro?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    sorry, ahahah a volte mi sento pazzo, ho risolto
    subito dopo che ho postato qui e ho letto il codice per l'ennesima volta mi sono accorto che nell'execute mancava ':campo_cerca'=>.......

    scusate per il thread inutile

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Perché usi questo
    array($_POST['campo_cerca'])

    e non questo?
    $_POST['campo_cerca']

    EDIT: mi rispondo da solo, ero convinto che passando un solo parametro l'array non fosse necessario, invece lo è.
    Ultima modifica di Alhazred; 13-05-2014 a 10:58

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    perchè non ci ho pensato a togliere la parola array

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Quindi funziona ugualmente senza?
    Io ero andato ad intuito visto che usando dei framework questi sono abbastanza intelligenti da rendersi conto della differenza, ma cercando un po' in giro avevo visto che per PDO, negli esempi, usano l'array anche per un solo parametro.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    no alt... mi confondo con poco io!! poi è mattina cavolo... comunque no l'execute deve prevedere che sia eseguito un array per forza..

    quindi o dichiari l'array tipo: $array=array(valore1,valore2,valore3) e poi fai execute($array) oppure fai come ho fatto io anche se iol valore è solo uno..

    comunque io ho corretto ciò che mi serviva, praticamente siccome ho fatto il binding del dato passato e il binding del dato prevede la dicitura: execute(array(':campo_cerca'=>$_POST['campo_cerca'])); in poche parole io mi ero dimenticato di mettere ':campo_cerca'=> infatti adesso funziona

    comunque grazie dell'immediatezza come sempre

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 © 2024 vBulletin Solutions, Inc. All rights reserved.