Hi,
I’m quite new to OOP PHP and i’m trying to make a dynamic insert function , i’ve followed an example on Stackoverflow to do so since its my first try at making something dynamic. http://stackoverflow.com/a/13333344/3559635
It works but im still quite confused about the two foreach loops , and if possible could someone explain that part to me please and or is there an easier way to do this for a new guy like me?
Im sending my POST values from the index.php
[php]<?php
include(“Database.php”);
$db = new Database();
var_dump($db);
$table = “users”;
$whitelist = array(‘username’, ‘password’);
$data = array_intersect_key($_POST, array_flip($whitelist));
if(isset($_POST[‘username’]) AND ($_POST[‘password’]))
{
$db->postTesting($data, $table);
}
else
{
echo “Please fill in everything!”;
}[/php]
Database.php
[php]
<?php
class Database
{
private $connection;
private $typedb = "mysql";
private $host = "127.0.0.1";
private $dbname = "oopphp";
private $username = "root";
private $password = "";
public function __construct()
{
try{
$this->connection = new PDO($this->typedb.
":host=".$this->host.
";dbname=".$this->dbname,
$this->username,
$this->password);
$this->connection->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
return $this->connection;
}
catch(PDOException $e)
{
throw new Exception("Connection failed: ".$e->getMessage());
}
}
public function postTesting($data, $table)
{
try{
//var_dump($table, $data);
$columns = "";
$holders = "";
foreach ($data as $column => $value)
{
//var_dump($column);
//var_dump($value);
$columns .= ($columns == "") ? "" : ", ";
$columns .= $column;
$holders .= ($holders == "") ? "" : ", ";
$holders .= ":$column";
//var_dump($columns);
//var_dump($holders);
}
$sql = "INSERT INTO $table ($columns) VALUES ($holders)";
//return $sql;
$stmt = $this->connection->prepare($sql);
//var_dump($stmt);
foreach ($data as $placeholder => $value)
{
$stmt->bindValue(":$placeholder", $value);
//var_dump($stmt);
//var_dump($placeholder);
//var_dump($value);
}
//var_dump($sql);
//var_dump($stmt);
$stmt->execute();
}
catch(PDOException $rError)
{
throw new Exception("Registering Failed: ".$rError->getMessage());
}
}
}
[/php]
Im seriously confused about this part.
[php]
foreach ($data as $column => $value)
{
//var_dump($column);
//var_dump($value);
$columns .= ($columns == "") ? "" : ", ";
$columns .= $column;
$holders .= ($holders == "") ? "" : ", ";
$holders .= ":$column";
//var_dump($columns);
//var_dump($holders);
}
[/php]
Thanks in advance :)!