Ir para conteúdo

[php] Mysql Class By Yunie


Posts Recomendados

Esta class facilita muito a utilização do MySQL em seu site, aqui está o code dela:

 

<?php

class mysql

{

protected $fields = array();

protected $querytype;

protected $newfields = array();

protected $table;

 

function __construct($table = 'players')

{

$this->table = $table;

}

 

function changeTable($table)

{

$this->table = $table;

}

 

function cleanFields()

{

$this->fields = array();

$this->newfields = array();

}

 

function setField($fieldname,$value = 0)

{

$this->fields[$fieldname] = $value;

}

 

function setNewField($fieldname,$value = 0)

{

$this->newfields[$fieldname] = $value;

}

 

function setQueryType($querytype = 'select')

{

$this->querytype = strtolower($querytype);

}

 

function showFields()

{

print_r($this->fields);

}

 

 

 

function executeQuery($extra = '')

{

$table = $this->table;

 

$return = array();

$sqlfields = '';

 

 

switch($this->querytype)

{

case 'select':

$a = 0;

if (count($this->fields) > 0)

{

$sqlfields = 'WHERE ';

}

foreach(array_keys($this->fields) as $keys)

{

$a++;

if ($a == count($this->fields))

{

$sqlfields .= '`'.$keys.'` = \''.$this->fields[$keys].'\'';

}

else

{

$sqlfields .= '`'.$keys.'` = \''.$this->fields[$keys].'\' AND ';

}

}

 

 

$query = "SELECT * FROM ".$table." ".$sqlfields." ".$extra."";

$query = mysql_query($query);

echo mysql_error();

while($result = mysql_fetch_assoc($query))

{

$return[] = $result;

}

break;

 

case 'insert':

$a = 0;

foreach(array_keys($this->fields) as $keys)

{

$a++;

if ($a == count($this->fields))

{

$fields .= $keys;

$values .= '\''.$this->fields[$keys].'\'';

}

else

{

$fields .= $keys.',';

$values .= '\''.$this->fields[$keys].'\',';

}

}

 

 

$query = "INSERT INTO ".$table." (".$fields.") VALUES (".$values.") ".$extra."";

$query = mysql_query($query);

$return = mysql_error();

echo $return;

break;

 

 

case 'delete':

foreach(array_keys($this->fields) as $keys)

{

 

$a++;

if ($a == count($this->fields))

{

$sqlfields .= '`'.$keys.'` = \''.$this->fields[$keys].'\'';

}

else

{

$sqlfields .= '`'.$keys.'` = \''.$this->fields[$keys].'\' AND ';

}

}

 

 

 

$query = "DELETE FROM ".$table." WHERE ".$sqlfields." ".$extra."";

$query = mysql_query($query);

$return = mysql_error();

echo $return;

 

 

break;

case 'update':

$a=0;

foreach(array_keys($this->fields) as $keys)

{

$a++;

if ($a == count($this->fields))

{

$sqlfields .= '`'.$keys.'` = \''.$this->fields[$keys].'\'';

}

else

{

$sqlfields .= '`'.$keys.'` = \''.$this->fields[$keys].'\' AND ';

}

}

$a=0;

foreach(array_keys($this->newfields) as $keys)

{

$a++;

if ($a == count($this->newfields))

{

$newfields .= '`'.$keys.'` = \''.$this->newfields[$keys].'\'';

}

else

{

$newfields .= '`'.$keys.'` = \''.$this->newfields[$keys].'\', ';

}

}

 

$query = "UPDATE ".$table." SET ".$newfields." WHERE ".$sqlfields." ".$extra."";

$query = mysql_query($query);

$return = mysql_error();

echo $return;

 

break;

 

default:

$return = FALSE;

break;

}

 

return $return;

 

 

}

// end functions execute query

 

 

}

?>

 

Após criar um arquivo PHP com o code da classe, você pode usá-la dando um include, exemplos de uso da classe:

<?php

$connect = mysql_connect('localhost', 'root', '1234');

mysql_select_db('forgottenserver', $connect);

 

include 'mysqlclass.php'; // edite aqui o diretório e o arquivo onde está a class mysql

 

$mysql = new mysql();

$mysql->cleanFields();

$mysql->setQueryType('select');

$mysql->changeTable('players');

$mysql->setField('name','Yunie');

$query = $mysql->executeQuery();

print_r($query);

?>

 

Em uma DB de um OTServer SQL, este código acima, mostraria todas informações do player com o nome Yunie.

 

Métodos desta Classe:

  1. cleanFields()
  2. changeTable($table)
  3. setField($field,$value)
  4. setNewField($field,$value)
  5. setQueryType($querytype)
  6. showFields()
  7. executeQuery()

 

Espero que usem,

Yunie.

Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

  • 1 month later...

rs, eu estava aprendendo fazer classes, não precisa de nenhum método anti sql injection na class, e sim na página do noob usuário que está usando a class.

 

Usar (int) e regex são as melhores soluções para sql injection.

 

A classe main era de outro projeto, eu estava usando esta class junto com alguns métodos/functions para sql injection, e esqueci de tirar o extends rs...

Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...