PDO bindParam from array only the last value is inserted

42 Views Asked by At

I am doing a small pdo class like this:

class Bd
{

    private $conn;
    private $server;
    private $port;
    private $database;
    private $user;
    private $pass;

    function __construct()
    {
        $this->server = '127.0.0.1';
        $this->database = 'testedb';
        $this->user = 'root';
        $this->pass = '123456';
        $this->connect();
    }
    function connect()
    {
        try
        {
            $options = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false,
            ];
            $this->conn = new PDO("mysql:host=$this->server;dbname=$this->database", "$this->user", "$this->pass",$options);
        }
        catch( PDOException $ex )
        {
            die($ex->getMessage());
        }
    }
    function prepare_execute($query, $params)
    {
        $this->stmt = $this->conn->prepare($query);
        foreach ($params as $key => $value)
        {
            $this->stmt->bindParam($key+1,$value);      
        }

        $this->stmt->execute();     
    }
}

$bd = new Bd;
$query = "INSERT INTO clientes (nome, morada, idade) VALUES(?,?,?)";

$params = array( 'jorge','rua','25');

$bd->prepare_execute($query,$params);

The problem is all fields get the 25 value, but if I use $params[$key] when binding the insert is performing like it should. What am I doing wrong with the foreach cicle? Thanks

0

There are 0 best solutions below