0x01: teste se o DOP está instalado com sucesso
Execute o código a seguir. Se o parâmetro estiver errado, significa que a DOP foi instalada. Se o objeto não existir, modifique o arquivo de configuração php php.ini e cancele os comentários no PHP_PDO_YOURSSSSSERVERVERHEREVEREME.EXTIS anteriores.
A cópia do código é a seguinte:
$ teste = novo PDO ();
0x02: conecte -se ao banco de dados
Execute o servidor Apache e confirme que o servidor foi executado e a instalação do PDO é bem -sucedida. Então vamos nos conectar ao banco de dados.
A cópia do código é a seguinte:
$ dsn = 'mysql: dbname = demo; host = localhost; porta = 3306';
$ nome de usuário = 'root';
$ senha = 'senha_here';
tentar {
$ db = novo PDO ($ dsn, $ nome de usuário, $ senha);
} catch (pDoException $ e) {
Die ('não conseguiu se conectar ao banco de dados:
'. $ e);
}
0x03: Consulta básica
O uso de consulta e executivo no PDO torna muito simples os bancos de dados de consulta. Se você deseja obter o número de linhas do resultado da consulta, é muito útil para instruções de consulta selecionadas.
A cópia do código é a seguinte:
$ declaração = <<< SQL
Selecione *
De `alimentos '
Onde `saudável` = 0
Sql;
$ alimentos = $ db-> consulta ($ extration);
Se a consulta acima estiver correta, o $ Foods agora é um objeto de declaração PDO, do qual podemos obter os resultados de que precisamos e quantos conjuntos de resultados consultamos no total.
0x04: Obtenha o número de linhas
Se você estiver usando o banco de dados MySQL, a instrução PDO contém um método rowcount para obter o número de linhas no conjunto de resultados, conforme mostrado no código a seguir:
A cópia do código é a seguinte:
eco $ alimentos-> rowcount;
0x05: Conjunto de resultados de travessia
A declaração de PDO pode ser percorrida usando a instrução FORECH, conforme mostrado no código a seguir:
A cópia do código é a seguinte:
foreach ($ alimentos-> fetchall () como $ alimento) {
eco $ comida ['nome']. '
';
}
O PDO também suporta o método de busca, que retorna apenas o primeiro resultado.
0x06: Escape os caracteres especiais inseridos pelo usuário
O PDO fornece um método chamado citação, que permite que caracteres especiais escapem dos lugares com citações na sequência de entrada.
A cópia do código é a seguinte:
$ input = este é 'a' '' bastante perigo 'str'ing
Após a transferência usando o método de cotação:
A cópia do código é a seguinte:
$ db-> quote ($ input): 'isto é/' s/'a/'/'/' beautiful Danger/'rous str/' ing '
0x07: Exec ()
O PDO pode usar o método EXEC () para implementar as operações de atualização, exclusão e inserção. Após a execução, ele retornará o número de linhas afetadas:
A cópia do código é a seguinte:
$ declaração = <<< SQL
Exclua de `alimentos '
Onde `saudável` = 1;
Sql;
echo $ db-> exec ($ extrates);
0x08: Declaração de pré -processamento
Embora o método e a consulta Exec ainda sejam amplamente utilizados e suportados no PHP, o site oficial do PHP ainda exige que todos usem declarações de pré -processamento para substituí -las. Por que? Principalmente porque: é mais seguro. As declarações de pré -processamento não inserem diretamente os parâmetros em consultas reais, o que evita muitas injeções potenciais de SQL.
No entanto, por algum motivo, o PDO realmente não usa o pré -processamento. Ele simula os métodos de pré -processamento, insere dados de parâmetros em declarações antes de passar a instrução para o servidor SQL, o que torna alguns sistemas suscetíveis à injeção de SQL.
Se o seu servidor SQL realmente não suportar pré -processamento, podemos corrigir facilmente esse problema, passando parâmetros durante a inicialização da DOP da seguinte forma:
A cópia do código é a seguinte:
$ db-> setAttribute (PDO :: att_emulate_prepares, false);
Aqui está a nossa primeira declaração de pré -processamento:
A cópia do código é a seguinte:
$ declaração = $ db-> preparar ('selecione * de alimentos onde `name` =? e` saudável` =?');
$ declaração2 = $ db-> preparar ('selecione * de alimentos onde `name` =: nome e` saudável` =: saudável)';
Conforme mostrado no código acima, existem duas maneiras de criar parâmetros, nome e anônimo (não pode aparecer em uma instrução ao mesmo tempo). Em seguida, você pode usar o BindValue para digitar sua entrada:
A cópia do código é a seguinte:
$ declaração-> bindValue (1, 'bolo');
$ declaração-> bindValue (2, verdadeiro);
$ declaração2-> bindValue (': nome', 'pie');
$ declaração2-> bindValue (': saudável', false);
Observe que, ao usar parâmetros nomeados, você deve incluir o cólon (:). O PDO também possui um método BindParam, que pode ligar valores numéricos por referência, ou seja, procura apenas os valores numéricos correspondentes quando a instrução é executada.
A única coisa a fazer agora é executar nossa declaração:
A cópia do código é a seguinte:
$ declaração-> Execute ();
$ extration2-> Execute ();
// Obtenha nossos resultados:
$ bolo = $ declaração-> fetch ();
$ pie = $ declaração2-> fetch ();
Para evitar o uso apenas de fragmentos de código do BindValue, você pode usar uma matriz para fornecer o método Execute como um parâmetro, como este:
A cópia do código é a seguinte:
$ declaração-> execute (matriz (1 => 'bolo', 2 => true));
$ declaração2-> execute (array (': name' => 'pie', ': saudável' => false));
0x09: transações
Uma transação é executar um conjunto de consultas, mas não economiza seu impacto no banco de dados. A vantagem disso é que, se você executar 4 instruções de inserção interdependente, quando se falhar, poderá reverter para que outros dados não possam ser inseridos no banco de dados, garantindo que os campos interdependentes possam ser inseridos corretamente. Você precisa garantir que o mecanismo de banco de dados que você esteja usando transações de suporte.
0x10: Iniciar a transação
Você pode simplesmente usar o método BeginTransaction () para iniciar uma transação:
A cópia do código é a seguinte:
$ db-> BEGNTRANSACION ();
$ db-> intransaction (); // verdadeiro!
Em seguida, você pode continuar a executar sua instrução de operação de banco de dados e enviar a transação no final:
A cópia do código é a seguinte:
$ db-> commit ();
Há também um método Rollback () semelhante ao MySQLI, mas não reverte todos os tipos (por exemplo, usando a tabela Drop no MySQL), esse método não é realmente confiável, recomendo tentar evitar confiar nesse método.
0x11: Outras opções úteis
Existem várias opções que você pode considerar usar. Eles podem ser inseridos como o quarto parâmetro quando seu objeto é inicializado.
A cópia do código é a seguinte:
$ options = matriz ($ option1 => $ value1, $ option [..]);
$ db = novo PDO ($ dsn, $ nome de usuário, $ senha, $ options);
PDO :: att_default_fetch_mode
Você pode escolher que tipo de conjunto de resultados o PDO retornará, como PDO :: Fetch_assoc, que permitirá que você use $ resultado ['column_name'] ou PDO :: fetch_obj, que retornará um objeto anônimo para que você possa usar $ resultado-> column_name
Você também pode colocar o resultado em uma classe específica (modelo), definindo um modo de leitura para cada consulta individual, como esta:
A cópia do código é a seguinte:
$ query = $ db-> query ('selecione * de `alimentos`');
$ alimentos = $ query-> fetchall (PDO :: fetch_class, 'comida');
PDO :: att_errmode
Explicamos isso acima, mas aqueles que gostam de TryCatch precisam usar: PDO :: Errmode_Exception. Se você deseja lançar um aviso de PHP por qualquer motivo, use PDO :: Errmode_warning.
PDO :: att_timeout
Quando você está ansioso com o tempo de carregamento, pode usar essa propriedade para especificar um tempo de tempo limite para sua consulta em segundos. Observe que, se o tempo que você definir exceder o tempo, a exceção padrão de e_warning será lançada, a menos que o PDO :: att_errmode seja alterado.