Inserimento multiplo non richiesto

SergioD

Nuovo Utente
25 Giu 2013
5
0
1
Ciao a tutti
Premetto che non sono ferratissimo in php. Il mio problema è che non capisco perchè con una sola istruzione "Insert Into" di mysql mi inserisce più righe, per la precisione 17.
Di seguito i passaggi:

//Chiamo la classe per aprire la connessione PDO
PHP:
$conn = new database();
//Creo la stringa sql
PHP:
$sql = "Insert Into NomeTabella (campo1, campo2) Values (?, ?)";
//Chiamo la funzione di classe "statement" per eseguire la query
CODE=php]$rows = $conn->statement(array("insert", $sql, "valorecampo1", "valorecampo2"));[/CODE]

//Chiudo la connessione
PHP:
$conn->disconnect();
Di seguito la classe database (ho tolto i riferimenti alla connessione)
PHP:
class database {

  private $connection;

  function __construct() {
    $this->connection = $this->connect();
  }

  function connect() {
    try {
      $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
      $connection = new PDO($this->dbtype . ":host=" . $this->dbhost . ";dbname=" . $this->dbname, $this->dbuser, $this->dbpass, $options);
      return $connection;
    }
    catch (PDOException $e) { echo $e->getMessage(); }
  }

  function statement($call) {

    $action = strtolower(array_shift($call)); // Parametro 0
    $query = array_shift($call); // Parametro 1
    $filters = $call; // Parametri filtro

    $stmt = $this->connection->prepare($query);

    if(isset($filters) && !empty($filters) && is_array($filters)) {
      foreach ($filters as $key => &$filter) {
        $filter = filter_var($filter, FILTER_SANITIZE_STRING);
        $stmt->bindParam(($key + 1), $filter);
      } 
    }

    $stmt->execute();

    $results = false;
    switch ($action) {
      case "select":
        $results = $stmt->fetchAll(); break;
      case "insert":
        $results = $stmt->rowCount(); break;
      default: break;
    }

    return $results;

  }

  function disconnect() {
    $this->connection = null;
  }

}