Nel preparare una procedura di inserimento dati in un database l'errore chem i viene riportato è appunto:
questo che segue il pezzo di codice che dovrebbe eseguire la query:
I parametri passati arrivano dal risultato di un filtro e sono esatti (controllati tramite la classica print_r()) ma non comprendo il senso dell'errore anche perché è riferito al secondo bind non al primo che per lui va bene.
$data è la data in standard ISO8601 ed è costruita in modo autonomo, ma non penso proprio ci sia un errore nella costruzione della data che alla fine risulta a tutti gli effetti una stringa.
Poi cercando su internet ho capito, l'errore era alla fine, dove c'è la riga:
ovvero quello 0 (zero) non ci andava e bisognava passare il valore con una variabile.
Va bene errore da poco, ma perché?
Per motivi miei per ora quel valore non va trasmesso e quindi è a blank, perché non posso scriverlo direttamente?
Certo potevo metterlo predefinito nel database e mi sarei risolto il problema, ma saranno affari miei se non ce l'ho messo predefinito, penso invece che debba essere possibile passare un valore in quel modo, no alla Zend hanno deciso di no.. uff.
Ad ogni buon conto il problema è un altro, ci sono diventato pazzo un'ora perché l'errore che mi veniva riportato era alla riga 70, quella segnalata sopra, mentre la riga dove era fisicamente l'errore è la 85.
Guttmans dove sei? :hammer:
La riga 70 è:Fatal error: Cannot pass parameter 2 by reference in C:\WWW\conc\inserimento_valori_occorrenze.php on line 70
PHP:
$handle->bindParam(':data', $data, PDO::PARAM_STR);
PHP:
try {
try {
$conn = new PDO($dsn, $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
try {
$handle = $conn->prepare('INSERTO INTO concorsi SET
concorso=:concorso,
data=:data,
estratto_1=:estratto_1,
estratto_2=:estratto_2,
estratto_3=:estratto_3,
estratto_4=:estratto_4,
estratto_5=:estratto_5,
estratto_6=:estratto_6,
estratto_7=:estratto_7,
estratto_8=:estratto_8,
estratto_9=:estratto_9,
estratto_10=:estratto_10,
numerone=:numerone');
// Inserimento dei dati nella tabella
$handle->bindParam(':concorso', $input_value['concorso'], PDO::PARAM_INT);
$handle->bindParam(':data', $data, PDO::PARAM_STR);
$handle->bindParam(':estratto_1', $input_value['valore'][0], PDO::PARAM_INT);
$handle->bindParam(':estratto_2', $input_value['valore'][1], PDO::PARAM_INT);
$handle->bindParam(':estratto_3', $input_value['valore'][2], PDO::PARAM_INT);
$handle->bindParam(':estratto_4', $input_value['valore'][3], PDO::PARAM_INT);
$handle->bindParam(':estratto_5', $input_value['valore'][4], PDO::PARAM_INT);
$handle->bindParam(':estratto_6', $input_value['valore'][5], PDO::PARAM_INT);
$handle->bindParam(':estratto_7', $input_value['valore'][6], PDO::PARAM_INT);
$handle->bindParam(':estratto_8', $input_value['valore'][7], PDO::PARAM_INT);
$handle->bindParam(':estratto_9', $input_value['valore'][8], PDO::PARAM_INT);
$handle->bindParam(':estratto_10', $input_value['valore'][9], PDO::PARAM_INT);
$handle->bindParam(':numerone', 0, PDO::PARAM_INT);
$handle->execute();
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
$data è la data in standard ISO8601 ed è costruita in modo autonomo, ma non penso proprio ci sia un errore nella costruzione della data che alla fine risulta a tutti gli effetti una stringa.
Poi cercando su internet ho capito, l'errore era alla fine, dove c'è la riga:
PHP:
$handle->bindParam(':numerone', 0, PDO::PARAM_INT);
Va bene errore da poco, ma perché?
Per motivi miei per ora quel valore non va trasmesso e quindi è a blank, perché non posso scriverlo direttamente?
Certo potevo metterlo predefinito nel database e mi sarei risolto il problema, ma saranno affari miei se non ce l'ho messo predefinito, penso invece che debba essere possibile passare un valore in quel modo, no alla Zend hanno deciso di no.. uff.
Ad ogni buon conto il problema è un altro, ci sono diventato pazzo un'ora perché l'errore che mi veniva riportato era alla riga 70, quella segnalata sopra, mentre la riga dove era fisicamente l'errore è la 85.
Guttmans dove sei? :hammer: