0
Hi, how are you? I am learning database with php, was creating a class named crud where there is a select function to remove data from the database, however, after select, the result is always 0, and pussuo data in the database, follow the code below:
Class code:
class Crud{
// VARIAVEIS SOBRE O DATABASE
// guarda o nome do banco de dados
private $db_name;
// nome do usuario do banco de dados
private $db_user;
// senha do banco de dados
private $db_password;
// servidor o qual está o banco de dados
private $db_server;
// guarda qual a linguagem do banco de dados ( ainda em desenvolvimento )
private $db_language;
// guarda a conecção com o banco de dados para que possam ser executadas as funções
private $db_conn;
// seta as variaveis para os valores passados ou para os pré definidos
function __construct($_name, $_user='root', $_password='', $_server='localhost', $_language='mysql'){
$this->set('db_name', $_name);
$this->set('db_user', $_user);
$this->set('db_password', $_password);
$this->set('db_server', $_server);
$this->set('db_language', $_language);
}
// Conecta ao banco de dados por meio de uma conecção PDO
private function connect(){
try {
// guarda as variaveis globais em variaveis locais para simplificar e diminuir a linha de conecção que vem posteriormente
$host = $this->get('db_server');
$name = $this->get('db_name');
$user = $this->get('db_user');
$password = $this->get('db_password');
$language = $this->get('db_language');
// seta a variavel db_conn como a conecção do banco de dados, permitindo usar em outras funções
$this->set('db_conn', new PDO("$language:host=$host;dbname=$name", $user, $password));
$this->db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
return $e;
}
}
// Desconecta do banco de dados atribuindo null a variavel que contem o objeto
private function desconnect(){
$this->db_conn = NULL;
}
/*
Função que retorna o dados do banco de dados
*$column_array: array que contem strings com as colunas que se deseja obter
*$table: string que contem o nome da tabela a qual os dados serão inseridos
*$where: string que contem a condição a ser executada após o where, ex: 'id = 1', caso vazio, retorna tudo da tabela
*/
public function select($column_array, $table, $where=''){
$this->connect();
// CRIAÇÃO DA QUERY SQL
$sql_qr = "SELECT";
$c = 0;
// adição das colunas que irão ser retornadas
foreach($column_array as $column){
if($c == 0){
$sql_qr = $sql_qr . " $column";
$c++;
} else {
$sql_qr = $sql_qr . ", $column";
}
}
// Adição da tabela e da condição where
$sql_qr = $sql_qr . " FROM $table";
if($where!=''){
$sql_qr = $sql_qr . " WHERE $where";
}
$dados = $this->db_conn->exec($sql_qr);
echo $dados;
$this->desconnect();
}
// CLASS FUNCTIONS
private function get($variable){
return $this->$variable;
}
private function set($variable, $value){
$this->$variable = $value;
}
}
$c = new Crud('test');
$c->select(['id', 'nome', 'sobrenome'], 'test_table');
As I said, when I give "echo $data" in the function Insert, it returns 0, however, my database is not empty ( photo below ), some suggestion I can do?