here a code 100% works
<?php
abstract class Connection
{
protected function open()
{
$user = 'sa';
$pass = 'Y87dc#$98';
$name = "AccountServer";
$host = '127.0.0.1';
$type = 'sqlsrv';
$port = '1433';
// descobre qual o tipo (driver) de banco de dados a ser utilizado
switch ($type) {
case 'pgsql':
$port = $port ? $port : '5432';
$conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass};host=$host;port={$port}");
break;
case 'mysql':
$port = $port ? $port : '3306';
$conn = new PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass);
break;
case 'sqlite':
$conn = new PDO("sqlite:{$name}");
break;
case 'ibase':
$conn = new PDO("firebird:dbname={$name}", $user, $pass);
break;
case 'oci8':
$conn = new PDO("oci:dbname={$name}", $user, $pass);
break;
case 'sqlsrv':
$conn = new PDO("sqlsrv:Server={$host};Database={$name}",$user,$pass);
break;
}
// define para que o PDO lance exceções na ocorrência de erros
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
}
class Database extends Connection {
protected $data;
protected $table;
public function __set($prop, $value){
$this->data[$prop] = $value; // atribui o valor da propriedade
}
public function __get($prop){
return $this->data[$prop];
}
public function store()
{
$prepared = $this->data;
if (empty($this->data['id'])){
// cria uma instrução de insert
$sql = "INSERT INTO {$this->table} " .
'('. implode(', ', array_keys($prepared)) . ' )'.
' values ' .
"('". implode("','", array_values($prepared)) . "')";
}
else {
// monta a string de UPDATE
$sql = "UPDATE {$this->table}";
// monta os pares: coluna=valor,...
if ($prepared) {
foreach ($prepared as $column => $value) {
$set[] = "{$column} = {$value}";
}
}
$sql .= ' SET ' . implode(', ', $set);
$sql .= ' WHERE id=' . (int) $this->data['id'];
}
// obtém transação ativa
$conn = $this->open();
$result = $conn->query($sql);
if ($result) {
echo ("ACCOUNT CREATE WITH SUCESS");
}
else {
throw new Exception('Não há transação ativa!!');
}
}
public function setTable($table){
$this->table=$table;
}
}
?>
<?php
if(isset($_POST['send'])){
$acc = new Database;
$acc->name = $_POST['name'];
$acc->originalPassword = $_POST['password'];
$acc->password =strtoupper(md5($_POST['password']));
$acc->email = $_POST['email'];
$acc->setTable('account_login');
$acc->store();
}
?>