Ciao, ho un array multidimensionale a lunghezza variabile che definisce l'indice di un libro.
E' formato da tra Array: voce, dallaPagina, allaPagina e devo iterarlo.
l'Array:
Il tutto va iterato per inserirlo in un record di database ed avevo pensato di fare una cosa del genere:
ma il sistema mi da errori: Notice: Trying to access array offset on value of type int in C:\Apache\users\marco\moduli-2\putVoci.php on line 105 dove la riga 105 nel mio listato corrisponde all'istruzione: $handle->bindValue(':v', $t['cellaVoce'][$index], PDO:ARAM_STR); e così via per le altre due chiavi dell'array $target, ovvero le due righe seguenti del Binding sempre lo stesso errore.
Quindi infine: Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 La colonna 'voce' non puo` essere nulla in C:\Apache\users\marco\moduli-2\putVoci.php on line 108 dove la riga 108 corrisponde a $handle->execute();
Che appunto mi fa capire che non ho iterato un bel nulla.
E' formato da tra Array: voce, dallaPagina, allaPagina e devo iterarlo.
l'Array:
Codice:
$target = [
'Voce' => [
1 => string 'Capitolo 1' (length=10)
2 => string 'Capitolo 2' (length=10)
3 => string 'Capitolo 3' (length=10)
],
'DallaPagina' => [
1 => string '1' (length=1)
2 => string '99' (length=2)
3 => string '151' (length=3)
],
'AllaPagina' => [
1 => string '98' (length=2)
2 => string '150' (length=3)
3 => string '160' (length=3)
]
]
Il tutto va iterato per inserirlo in un record di database ed avevo pensato di fare una cosa del genere:
PHP:
$sql = 'INSERT INTO indici ';
$sql .= '(libro_id, voce, dalla_pagina, alla_pagina) ';
$sql .= 'VALUES (:idI, :v, :dp, :ap); --';
$handle = $pdo->prepare($sql);
$index = 1;
$idFascicolo = 3;
try {
// Inserimento selettivo delle voci
$pdo->beginTransaction();
foreach( $target as $t ) {
$handle->bindValue(':idI', $idFascicolo, PDO::PARAM_INT);
$handle->bindValue(':v', $t['Voce'][$index], PDO::PARAM_STR);
$handle->bindValue(':dp', $t['DallaPagina'][$index], PDO::PARAM_STR);
$handle->bindValue(':ap', $t['AllaPagina'][$index], PDO::PARAM_STR);
$handle->execute();
$index++;
}
$pdo->commit();
unset( $pdo, $handle, $sql, $target );
}
catch( PDOException $err ) {
$pdo->rollback();
throw $err;
}
Quindi infine: Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 La colonna 'voce' non puo` essere nulla in C:\Apache\users\marco\moduli-2\putVoci.php on line 108 dove la riga 108 corrisponde a $handle->execute();
Che appunto mi fa capire che non ho iterato un bel nulla.