Insert into che da errore: numero di parametri non validi....

MarcoGrazia

Utente Attivo
15 Dic 2009
808
16
18
59
Udine
www.stilisticamente.com
Ciao.
Ho un problema apparentemente impossibile da risolvere, ma siccome i miracoli sul lavoro vanno risolti e l'impossibile non esiste mi tocca risolverlo comunque.
Va be a parte le spiritosaggini il problema è questo: non riesco a inserire un record in una tabella di database. ( secondo il PHP/MySQL ).
La query:
Codice:
INSERT INTO pagina (id_pagina, nome, visibile, creata, titolo_pagina, titolo_header, occhiello_header)
VALUES (NULL, ':nome', :visibile, ':creata', ':titolo_pagina', ':titolo_header', ':occhiello_header')
Tenete presente che sto usando il PDO e quindi in values ci sono dei segnaposto; tutti i segnaposto sono qualificati e validi.

La struttura della tabella è questa:
Codice:
CREATE TABLE IF NOT EXISTS `pagina` (
  `id_pagina` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(256) NOT NULL COMMENT 'nome della pagina',
  `visibile` tinyint(4) NOT NULL DEFAULT '1' COMMENT '0=non visibile, 1= visibile',
  `creata` date NOT NULL,
  `titolo_pagina` varchar(256) NOT NULL,
  `titolo_header` varchar(256) NOT NULL,
  `occhiello_header` varchar(256) DEFAULT NULL,
  PRIMARY KEY (`id_pagina`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Definisce la pagina' AUTO_INCREMENT=15 ;

L'errore:
File:C:\WWW\X\admin\verifica_pagine_sito.php
Linea: 38
Codice: HY093
Messaggio:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
 

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
quando sviluppai la classe che utilizzo per gli accessi al db, ricordo di aver litigato con una situazione simile alla tua,
usando pdo,
Codice:
 $sth->bindParam(1,  $par1)
ebbene i parametri devono essere senza apici, quindi prova a togliere gli apici dai VALUES
(ometterei anche la colonna gestita in automatico)
non ho altre idee
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
i parametri devono essere indicati senza apici sicuramente, perché altrimenti sono interpretati come stringhe di dati,
rimane da controllare che tutti i parametri abbiano assegnato un adeguato valore ovvero per ciascuno di essi sia eseguita
la bindValue o analoga, persistendo il problema posta la classe
ciao
Marino
 

MarcoGrazia

Utente Attivo
15 Dic 2009
808
16
18
59
Udine
www.stilisticamente.com
Ma no assolutamente le stringhe vanno "apicate" mentre gli interi no, se ci stai attento funziona, inoltre il dato così è più sicuro, nessuno può inserire una stringa su un intero mentre un intero verrebbe trasformato in stringa.
Dopotutto la validazione dei dati non deve essere affidata al MySQL ma al linguaggio che invia questi dati, in questo caso il PHP.
Infatti alla fine ho risolto e ho visto dove sbagliavo, passavo dei valori nulli perché mi ero intestardito a realizzare un form di passaggio sia per l'update che per il nuovo progetto usando comunque dei valori array, in pratica non differenziavo mai quali dei due casi erano inviati.
Siccome avevo iniziato a creare un nuovo progetto invece di fare l'upgrade di uno già inserito non mi ero accorto dell'errore, ora funziona, c'è solo un piccolo insignificante problema di secondaria importanza... nonostante le variabili sono giustee qualificate, non ci sono più errori ne formali e ne sostanziali, nel database non mi ritrovo nulla.
Ma questo sarà oggetto di un nuovo post. :) anzi :(
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia [PDO] insert che non inserisce e non da errori PHP 1
R INSERT INTO tabella non funziona Classic ASP 2
Z problemi con foreach insert into PHP 10
Y INSERT INTO PHP 0
M più insert tramite while loop PHP 1
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
G Insert into select - Aiuto MySQL 0
L Insert php sql da una form multipla PHP 6
A [PHP] Problema query insert [RISOLTO] PHP 14
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
P [PHP] INSERT e UPDATE PHP 1
D [ASP] Mysql insert e update Classic ASP 2
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Monital [PHP] Insert into non inserisce tutti i dati PHP 1
trattorino [PHP] problema entrata immagini insert PHP 1
C [Visual Basic] Errore INSERT su DB MySQL (VB.Net) Visual Basic 4
3_g errore con mysql insert in PDO PHP 29
Merlina3377 php insert dati su tabella sql PHP 9
T [PHP] impedire un doppio INSERT INTO dopo reload della pagina PHP 3
daniele8808 Insert a converted php array in a js object PHP 4
P [MySQL] Query su DB 1 e Insert su DB 2 PHP 11
Laskot Query al DB con php (INSERT) PHP 2
P [PHP] merge di 2 tabelle e insert su terza tabella PHP 15
giancadeejay [PHP] INSERT into tabella tramite scelta checkbox PHP 0
E [PHP] problema insert query PHP 9
O errore INSERT con oggeto datetime MySQL 2
A insert ed upload PHP 1
E Problemi auto increment con query Insert Into Select MySQL 2
A Insert multiple a partire da form html PHP 3
stellare21 insert con Sqlite e PHP PHP 4
Marco_88 Aiuto con istruzione INSERT Database 8
A Insert non inserirsce tutti i valori MySQL 11
S Insert into....on duplicate key update MySQL 2
M Problemi con la insert PHP 1
I Insert con select da tabella e valori predefiniti MySQL 2
A Insert da ciclo for PHP 4
Monital [risolto] insert into if select non presente MySQL 7
G Inserimento loop in una INSERT query in PHP e MySQL PHP 2
S INSERT e UPDATE non funzionano PHP 1
H [RISOLTO]Problema connessione + insert mysqli PHP 10
L insert into da query select PHP 0
S Tempi per INSERT MySQL 7
A insert funziona in server locale ma non in remoto MySQL 7
Emix Problema Insert... PHP 10
C Aiuto INSERT INTO... ON DUPLICATE KEY UPDATE PHP 1
M Sicurezza dati form per insert e select in database PHP 11
E Problema con INSERT INTO Classic ASP 2
F insert immagini database PHP 2
F Insert nel database di un'immagine caricata PHP 11
P Errori su variabili dell'insert PHP 28

Discussioni simili