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