Ciao a tutti, sto cercando di creare una classe che mi gestisca una o più insert con pdo e i prepared statement di mysql, solo che sto avendo dei problemi.
L' errore che mi restituisce è
PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
anche se a quanto pare il numero dei parametri è corretto, se faccio un print_r dell' array contenente i dati da inserire e un print della stringa sql visualizzo questo:
INSERT INTO t_estimates (subject, date_estimates, estimate_cost, validity, with_iva, note, id_estimate_status, id_staff, id_document, id_document_year) VALUES (? , ? , ? , ? , ? , ? , ? , ? , ? , ?)
Array ( [subject] => Oggetto del preventivo [date_estimates] => 2019-10-28 [estimate_cost] => 12000 [validity] => 30 [with_iva] => 1 [note] => Note [id_estimate_status] => 12 [id_staff] => 78 [id_document] => 151 [id_document_year] => 2019 )
INSERT INTO t_jobs (id_works, start_time, end_time, annulled, subject, note) VALUES (? , ? , ? , ? , ? , ?)
Array ( [id_works] => 2422 [start_time] => [end_time] => [annulled] => [subject] => [note] => )
INSERT INTO t_jobs_amount_hours (id_jobs, id_staff, fp_number, start_time, end_time, note, id_status) VALUES (? , ? , ? , ? , ? , ? , ?)
Array ( [id_jobs] => 0 [id_staff] => [fp_number] => [start_time] => [end_time] => [note] => [id_status] => 7 )
INSERT INTO t_jobs_about_doc (id_jobs_session, id_estimates) VALUES (? , ?)
Array ( [id_jobs_session] => 0 [id_estimates] => 0 )
Grazie mille ecco il codice:
Codice PHP:
class INSERT extends DB{
public static $Bind;
public static $Data;
public static $Table;
public static $Columns;
public static $SpValues;
public static $LastInsertId;
public function __construct($p){
parent::__construct($p["conn"]);
self::$Bind = $p["bind"];
self::$Data = $p["data"];
self::$Table = $p["table"];
self::$Columns = $p["columns"];
self::$SpValues = $p["sp_values"];
self::Insert();
}
private function Insert(){
$Sql = "INSERT INTO " . self::$Table . " (" . self::$Columns . ") VALUES (" . self::$SpValues . ")";
if(self::$Bind === true){
$stmt = $this->PdoConn->prepare($Sql);
$stmt->execute(self::$Data);
}
else{
$this->PdoConn->query($Sql);
}
self::$LastInsertId = $this->PdoConn->lastInsertId();
}
}