[PHP] PDO prepared statement - select query errore

cleto

Nuovo Utente
28 Feb 2012
12
0
1
Salve ho un DB dal nome 'test' con campi ID, post_title, post_content, post_name, post_date e la seguente query:

PHP:
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'test';
$id = 1;
try{

     $conn = new PDO("mysql:host={$db_host};dbname={$db_name}", "$db_user", "$db_pass");

     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    $stmt = $conn->prepare("SELCT * FROM objects WHERE ID  = :id ");
 
     $stmt->execute(array(":id" => $id));

      while($row = $stmt->fetch(PDO::FETCH_OBJ)){
 
         $results[] = $row;

      } 
 
      echo '<pre>' , print_r ($results) , '</pre>';

  } catch(PDOException $e){

    echo 'ERROR: ' . $e->getMESSAGE();

  }

e ricevo il seguente messaggio di errore:

ERROR: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe pr�s de 'SELCT * FROM objects WHERE ID = '1'' � la ligne 1

sapete darmi una dritta?...grazie
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Ciao. Hai un errore nella query. Hai scritto SELCT al posto di SELECT.
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Perchè usi prepare per un select? Io lo uso sempre e solo per insert ed update.. crea una sorta di segnaposto da quanto ho capito, e si usa per prevenire le injection db. Per questo motivo lo uso prevalentemente quando vado ad inserire dati provenienti da fonti esterne, ma se devo recuperarmi un dato da db non l'ho mai usato.
Comunque appena ho un sec ti posto il codice che uso io se ancora non hai risolto.


Inviato dal mio iPhone utilizzando Tapatalk
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Perchè usi prepare per un select? Io lo uso sempre e solo per insert ed update.. crea una sorta di segnaposto da quanto ho capito, e si usa per prevenire le injection db. Per questo motivo lo uso prevalentemente quando vado ad inserire dati provenienti da fonti esterne, ma se devo recuperarmi un dato da db non l'ho mai usato.

chi vuole compiere azioni malevole introduce del codice, in questo caso sql,
non sembra ovvio, anche se dovrebbe esserlo, che il codice può essere inserito in qualunque "veicolo", select comprese, che agisce su delle risorse

@cleto lascia il binding su ogni azione che interessa il db
 
  • Like
Reactions: otto9due

cleto

Nuovo Utente
28 Feb 2012
12
0
1
Grazie mille...e dire che l'ho riletta per ore (sic) e alla fine ho trovato anche questa sintassi:

PHP:
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'test';
$id = 1;
try{

    $conn = new PDO("mysql:host={$db_host};dbname={$db_name}", "$db_user", "$db_pass");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);             
             
     $sql = "SELECT *
                 FROM objects
                WHERE ID = :id";    
   
       $stmt = $conn->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
   
      $stmt->execute(array(':id' => $id));

            while($row = $stmt->fetch(PDO::FETCH_OBJ)){  
   
               $results[] = $row;
       
            }    

      echo '<pre>' , print_r ($results) , '</pre>';

 } catch(PDOException $e){
      echo 'ERROR: ' . $e->getMESSAGE();
 }

@cleto lascia il binding su ogni azione che interessa il db

mi vergogno della mia ignoranza ma non so che vuol dire
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
mi vergogno della mia non conoscenza, ma non so che vuol dire
proprio il modo di agire con i "segnaposto", detto in maniera molto semplice
che sono rappresentati con ":nome" oppure da un "?", ovvero
PHP:
SELECT * FROM objects WHERE ID = :id
oppure
SELECT * FROM objects WHERE ID = ?
puoi fare riferimento al manuale per le differenze ed ad un buon articolo, se hai del tempo ...
https://phpdelusions.net/pdo
 
Discussioni simili
Autore Titolo Forum Risposte Data
K [PHP] PDO.bindingParam PHP 2
M [PHP] Interrompere DROP TABLE con PDO PHP 0
M [PHP] Alternativa a datagrid con PDO PHP 6
M [PHP] Creare un menu a tendina con pdo PHP 18
M [PHP] Array di array - PDO PHP 2
W [PHP] Creazione classe PDO PHP 4
F PHP, PDO e visualizzazioni errori e/o eccezioni PHP 3
3_g [PHP] mvc, pdo e classi... PHP 7
F php PDO mysql connessione(select_db) PHP 3
Fredyss redirect a altra pagina php dopo commit su postgresql con PDO PHP 1
ANDREA20 [PHP] Errore $this->db_connection = new PDO PHP 0
MarcoGrazia [PHP][PDO][MySQL] Non registra ma non da nemmeno errori. PHP 0
MarcoGrazia [PHP][PDO] Come connettersi al database Snippet PHP 0
MarcoGrazia [PDO][PHP[MySQL] Piccolo modulo di ricerca in un sito tramite l'operatore LIKE Snippet PHP 1
neo996sps [PHP e funzioni con PDO] Funzione per generare corpo tabella PHP 1
R Organizzazione PHP Mysql PDO PHP 15
voldemort PHP PDO: non c'ho capito niente PHP 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1

Discussioni simili