BANCO DE DADOS WEB 1 CONECTANDO SE AO CONECTANDO-SE MYSQL VIA PHP Professor Luciano Roberto Rocha Como conectar MySQL via PHP 2 O MySQL é mais popular SGBD entre os desenvolvedores PHP. Existem várias funções ç do PHP bem documentadas que podem ser utilizadas em conjunto j com o MySQL. y O procedimento para fazer uma conexão simples p e selecionar alguns g dados segue g um princípio de 5 passos. O princípio dos 5 passos 3 1. Estabelecer a conexão com o SGBD e selecionar a base de dados; 2. Executar a instrução SQL; 3. Recuperar os resultados do conjunto de t l tuplas; 4 Processar os dados e exibir os valores 4. obtidos; 5. Fechar a conexão; 1º PASSO – Conectar 1 Conectar-se se ao SGBD 4 mysql_connect() e mysql_select_db() abre uma conexão com um servidor de banco de dados MySQL especificado por connection_string . Retorna R t um identificador id tifi d de d conexão ã MySQL M SQL em caso de d sucesso, ou FALSE em caso de falha. A função mysql_select_db() Seleciona um banco de dados MySQL. Retorna TRUE em caso de sucesso ou FALSE em falhas. 1º PASSO – Conectar 1 Conectar-se se ao SGBD 5 Descrição: mysql y q _connect ((string g $server, $ , string g $username, $ , string g $password) $p ) O parâmetros Os â t para mysql_connect l t incluem: i l server: O servidor MySQL. Também pode incluir um número de porta, exemplo "servidor:porta" . username: O nome de d usuário. á i O valor l padrão d ã é o nome do usuário que é o proprietário do processo do servidor.; password: A senha. O valor padrão é uma senha vazia. 1º PASSO – Conectar 1 Conectar-se se ao SGBD 6 Descrição: mysql_select_db (string $database_name [, resource $ link_identifier ] ) Os parâmetros para mysql_select_db incluem: database: O nome da base de dados do MySQL. resource: A chave h d conexão da ã retornada t d pela l função f ã mysql_connect(). 1º PASSO – Conectar 1 Conectar-se se ao SGBD 7 Exemplos: $bdcon1 = mysql_connect( mysql connect(“localhost” localhost , “root” root , “ ”); ); <?php p p $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Não die( Não conectado : ' . mysql_error()); mysql error()); } $db_selected $db selected = mysql_select_db( mysql select db('foo' foo , $link); if (!$db_selected) { die (Não posso usar esse banco! : ' . mysql_error()); } ?> 2º PASSO – Executar a instrução SQL 2 8 mysql_query() Envia uma declaração SQL para o banco de dados MySQL especificado pelo recurso de conexão; Retorna um recurso (resource) de resultado da consulta (query) se a consulta pôde ser executada. Retorna FALSE em caso de falha ou se a conexão não é uma conexão válida. válida 2º PASSO – Executar a instrução SQL 2 9 Descrição: mysql_query y q _q y ( string g $query $q y [, resource $ $link_identifier _ ]) Os p parâmetros p para mysql_query y q _q y são: query: A consulta SQL. A consulta não deve terminar com um ponto e vírgula. vírgula link_identifier: _ A chave da conexão retornada p pela função mysql_connect(). 2º PASSO – Executar a instrução SQL 2 10 Exemplos: //com a declaração do parâmetro connection $result=mysql_query("SELECT COUNT(*) AS rows FROM x WHERE a=b“, $conn); //omitindo o parâmetro connection. O PHP usará a última conexão válida $resultado = mysql_query("SELECT * FROM agenda"); 3º PASSO – Recuperar os resultados 3 11 mysql_fetch_array() Retorna um matriz que corresponde à linha (registro) obtida e move o ponteiro interno dos dados adiante. Além de armazenar os dados em índices numéricos (índice) no array resultante, também armazena os dados em chaves associativas (nome do campo) por padrão. Retorna FALSE se não existem mais linhas. linhas 3º PASSO – Recuperar os resultados 3 12 Descrição: mysql y q _fetch_array y ( resource $ $result [, int $ $result_type yp ] ) Os p parâmetros são: result: O resultado que está sendo avaliado. Este resultado vem de uma chamada a mysql_query(). mysql query() result_type: _ yp O tipo p de arrayy q que deve ser obtida. é uma constante e pode ter os seguintes valores: MYSQL_ASSOC, MYSQL_NUM, e o valor padrão de MYSQL BOTH MYSQL_BOTH. 3º PASSO – Recuperar os resultados 3 13 Exemplos: // t //retornando d um array com índice í di de d campo como chave h $arr = mysql_fetch_array($result, MYSQL_NUM); echo $arr[0]; //retornando um array associativo que tem o nome de campo como chave $arr = mysql_fetch_array($result, MYSQL_ASSOC); echo $arr[“autor”]; //retornando um array sem indicar opção: retorna o valor padrão MYSQL_BOTH $linha = mysql_fetch_array($resultado); echo $linha[0]; echo $linha[“id”]; $ [ ]; 4º PASSO – Processar e exibir os valores 4 14 mysql_num_rows() e mysql_num_fields() Retorna respectivamente o número de linhas e o número de campos corresponde à consulta (SQL). A utilização dessas funções são opcionais, servindo apenas como suporte para o controle do laço de repetição durante a exibição dos valores. Retorna false em caso de erro. erro 4º PASSO – Processar e exibir os valores 4 15 E Exemplos: l //utilizando mysql_num_fields para estabelecer o final de um looping $fim = mysql_num_fields($resultado); mysql num fields($resultado); while ($linha = mysql_fetch_array($resultado)) { for ($i=0; $i <= $fim; $i++) { echo h $linha[$i]; $li h [$i] } } //utilizando pg_num_rows para verificar o total de registros retornado em um consulta $cont = 0; while ($cont < mysql_num_rows($resultado)) { $linha = mysql_fetch_array($resultado, $cont, PGSQL_ASSOC); echo $linha["nome"]; $cont++; } 4º PASSO – Processar e exibir os valores 4 16 mysql_affected_rows() retorna o número de linhas (instâncias/registros/linhas) / / afetados por consultas (queries) INSERT, UPDATE e DELETE executados por pg_query(). pg query() Se nenhuma linha foi afetada, ela retornará -1. Exemplo: <?php $result = mysql_query($conn, "INSERT INTO authors VALUES ('Orwell', 2002, ’Farm')"); $nro = mysql_affected_rows($result); echo h $nro $ . “tuplas “t l fforam afetadas.\n"; f t d \ " ?> 5º PASSO – Encerrando a conexão 5 17 mysql_free_result() e mysql_close() mysql_free_result() libera a memória usada pelo resultado; Precisa ser usada apenas se você está preocupado em usar muita memória enquanto seu script está rodando. mysql_close() fecha a conexão com servidor de banco de dados MySQL associado ao recurso (resource) connection d d dado. Retorna TRUE em caso de sucesso ou FALSE em falhas. NOTA: Normalmente, o uso de mysql_close() não é necessário já que conexões não persistentes abertas são automaticamente fechadas ao final do processamento do script. 5º PASSO – Encerrando a conexão 5 18 E Exemplos: l //Encerrando uma conexão <?php $dbconn = mysql_connect(“localhost”, “root”, “ger@l”) or die("Não foi possível conectar"); print("Conexão bem sucedida"); mysql close($dbconn); mysql_close($dbconn); ?> Exemplo – Conexão e consulta simples 19 <?php ## 1º passo: CONECTAR AO BANCO $conexao = mysql_connect( mysql connect( “localhost” localhost , “root” root , “ger@l” ger@l ) or die ( "Nao Nao consegui conectar ao MySQL" ); mysql_select_db(“cadastro”) or die(“não consegui encontrar o Banco de Dados”); ## 2 2º passo: EXECUTAR CONSULTA SQL $nome = $_GET["nome"]; $resultado = mysql_query( "SELECT * FROM agenda WHERE nome = '$nome'" ); ## 3º passo: RECUPERAR RESULTADOS DO CONJUNTO DE TUPLAS $linha = mysql_fetch_array($resultado, MYSQL_ASSOC); ## 4º passo: PROCESSAR E EXIBIR OS VALORES OBTIDOS echo $linha[id] . " " . $linha[nome]; ## 5º passo: ENCERRAR A CONEXÃO COM O SGBD mysql_close($conexao); ?>