Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

li0n.coder

PDO bind error

Recommended Posts

Fiz este code para apagar banco de dados do mysql:

    public function deleteDatabase() {
        foreach ($_POST['marcar'] as $value) {
                $database[] = 'information_schema';
                $database[] = 'performance_schema';
                $database[] = 'mysql';
                $database[] = 'yuno-gasai';
                
                if (in_array($value, $database)) {
                    exit ("You cannot delete that database.");
                } else {
                    try {                      
                        // Prepare the query to execute
                        $query = $this->db->prepare( "DROP DATABASE `{$value}`",  array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
                    
                        // Execute the query
                        $query->execute();
                    } catch(PDOException $e) {
                        echo $e->getMessage();
                    }
                }
        }
    }
O code acima funciona certo!

E acabei descobrindo que o bind pode ajudar no SQL injection:

    public function deleteDatabase() {
        foreach ($_POST['marcar'] as $value) {
                $database[] = 'information_schema';
                $database[] = 'performance_schema';
                $database[] = 'mysql';
                $database[] = 'yuno-gasai';
                
                if (in_array($value, $database)) {
                    exit ("You cannot delete that database.");
                } else {
                    try {                      
                        // Prepare the query to execute
                        $query = $this->db->prepare( "DROP DATABASE `:name`");
                        
                        $parameters = array(':name' => $value);
                    
                        // Execute the query
                        $query->execute($parameters);
                    } catch(PDOException $e) {
                        echo $e->getMessage();
                    }
                }
        }
    }
Depois disso ela exibi este erro

Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1008 Can't drop database ''olá mundo''; database doesn't exist in C:\xampp\htdocs\application\model\model.php on line 121

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.