özel veri ayıklamak için mysqli kullanarak

2 Cevap php

I dinamik benim veritabanından veri almak, böylece tüm Seçme sorguları için php bir işlevi kullanıyorum ..... Ben sadece güvenli ve verimli benim kod ya da bilmek istedim bunu yapmak için daha iyi bir yolu, eğer onların ise böylece doğru yönde bana gelin lütfen ... teşekkürler

class mysql {
	private $conn;		
	function __construct(){
				$this->conn= new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
				if( mysqli_connect_errno() )  
				{  
					 trigger_error('Error connecting to host. '.$this->connections[$connection_id]->error, E_USER_ERROR);  
				}
	}
function extracting_data($table, $fields,$condition,$order,$limit){
		$query="SELECT ".$fields."
				FROM ".$table."
				WHERE id =".$this->sql_quote($condition)."
				ORDER BY ".$order."
				LIMIT ".$limit." ";
		//echo $query;
		if($stmt = $this->conn->prepare($query)) {
			$stmt->execute();
			$row = array_pad(array(), $stmt->field_count, '');
			$params = array();
				foreach($row as $k=>$v) {
				  $params[] = &$row[$k];
				}
			call_user_func_array(array($stmt,'bind_result'),$params);
			$result = array();
            while($stmt->fetch()) {
                foreach ($row as $b=>$elem) {
                	$vals[$b]=$row[$b];
                }
                $result[]=$vals;
            }
            $stmt->close();
            return $result;

		}

	}
	function sql_quote( $value )
	{
    	if( get_magic_quotes_gpc() )
    	{
        	$value = stripslashes( $value );
    	}
    //check if this function exists
	    if( function_exists( "mysql_real_escape_string" ) )
	    {
	          $value = mysql_real_escape_string( $value );
	    }
    //for PHP version < 4.3.0 use addslashes
	    else
	    {
	          $value = addslashes( $value );
	    }
	    return $value;
	}

}

Şimdi ben kullanıyorum işlevini çağırmak ::>

    $connection=New mysql();
$extract=$connection->extracting_data("tablename","id,name,points","$_GET['id']","date desc","0,10");

The function returns a multi-dimensional array in $result and stores it in $extract ,depending on the data I want to extract.. Any improvements or other suggestions would be appreciated ...

2 Cevap

  1. Lütfen fonksiyonu için parametreleri nereden geldiğini izlemek gerekir. Onlar güvenilmez bir kaynaktan geliyorsa, o zaman çok güvensiz.

    Birisi 1 ; DROP TABLE tablename ; SELECT * FROM dual WHERE 1 $condition parametre gibi bir şey geçerse, Little Bobby Tables senaryoyu alırsınız.

  2. Sizin sorgu aşağıdaki gibi görünecektir:

     SELECT  id, name, points
     FROM    tablename
     WHERE   id
     ORDER BY
             DATE DESC
     LIMIT 0, 10
    

    [(4)] id burada BOOLEAN türüne dönüştürülür ve sorgu 0 dışındaki tüm id ve {s seçecek }.

    Ne istediğinizi gerçekten mi?

    Muhtemelen 'id = $id' ya da buna benzer bir şey için $condition değiştirmek istiyorum.

  3. Bilinmeyen alanları ile uknown tablolardan fakat önceden tanımlanmış SELECT / FROM / ORDER BY / LIMIT belirtilen yapıda sorguları oluşturma: Eğer gerçekten soyutlama düzeyine ihtiyaç mı?