TECNOLOGIA WEG II PHP com SGBD MYSQL Existem diversas formas de se acessar o SGBD Mysql para manipulação de dados por meio do PHP. Consulte o manual do PHP, em www.php.net ou http://www.php.net/manual/pt_br/, para ver outras formas 1 Conexão com o Servidor de Banco de Dados A primeira atividade é efetuar a conexão com um servidor que possua o mysql 1.1 obtendo dados de conexão Neste caso estamos retendo os dados da conexão em variáveis. Estes valores poderão vir de uma pagina PHP ou serem fixos. $pass = "senha"; 1.2 Efetuando a conexão A função mysql_connect () tem a finalidade de efetuar a conexão. Esta função retorna um identificador de conexão MySQL em caso de sucesso, ou false em caso de falha. A seguir temos dois casos de uso desta função, em ambos os casos uma variável recebe o resultado retornado pela função mysql_connect (). Esta função deve receber, o servidor, o usuário e a respectiva senha. CASO I $conexao= mysql_connect($host,$user,$pass) or die (mysql_error()); CASO II 1
$conexao = mysql_connect($host,$user,$pass); }; 1.3 Selecionando a Base de Dados Tendo sido efetuada a conexão é necessário selecionar a base de dados, da qual se deseja manipular os dados. A função mysql_select_db define que banco será usado para a conexão. Ela retorna TRUE em caso de sucesso ou FALSE em falhas Caso I Caso II $db_selecionada = mysql_select_db('nome_base',$conexao); if(!$db_selecionada) { die ('não pode usar a base: '. mysql_error()); } mysql_select_db('nome_base',$conexao) or die (mysql_error()); Após a definir a conexão e a base de dados podemos executar comandos sql para manipular os dados desta base. 2. Manipulando Dados com Comandos SQL A definição da conexão e da base de dados é feita uma única vez para cada arquivo PHP. Após esta definição pode-se executar diversas função para manipular os dados da base de dados. 2.1 Definindo uma instrução da SQL A função mysql_query executa uma consulta em uma conexão, na base definida. É possível criar instruções para os comandos SELECT, SHOW, DESCRIBE, EXPLAIN, UPDATE, DELETE, DROP etc. 2
A função mysql_query() retorna uma variavel especial para SELECT, SHOW, DESCRIBE, EXPLAIN, em caso de sucesso, ou FALSE em caso de falha. Para os demais comandos ela retorna TRUE em caso de sucesso ou FALSE em caso de erro. a) Consulta a Dados $pass = "senha"; $conexao = mysql_connect($host,$user,$pass); // defina o comando sql e armaze-o em uma variável, neste exemplo // $query_sql $query_sql = "SELECT * FROM nome_tabela"; // resultado em uma na variável, neste exemplo $resultado, $resultado = mysql_query($query_sql,$conexao); b) Inserção de Dados $pass = "senha"; $conexao = mysql_connect($host,$user,$pass); 3
// defina o comando sql e armaze-o em uma variável, no exemplo na variável // $inseri_sql $inseri_sql = "INSERT INTO nome_tabela(campo 1, campo 2,, campo n ) values (valor 1, valor 2,, valor n) resultado em uma variável, neste exemplo $insercao, $insercao = mysql_query($inseri_sql,$conexao); 2.2 Obtendo o número de linhas de uma consulta A Função mysql_num_rows retorna o número de linhas afetadas, retornando FALSE em caso de falha.sendo válido somente para o SELECT ou SHOW. No caso de select quantas linhas retornaram a consulta. Já a função mysql_affected_rows fornece o número de linhas atingidas pelo comandos INSERT, UPDATE, REPLACE ou DELETE. Esta função retorna -1 se o comando falhou CASO I - mysql_num_rows php $conexao = // defina o comando sql e armaze-o em uma variável, neste caso na variável // $consulta_sql $consulta_sql = "SELECT * FROM nome_tabela"; // resultado em uma variável, neste exemplo $insercao, $consulta = mysql_query($consulta_sql, $conexao); // execute a funçao, mysql_num_rows(), para obter o numero de colunas // afetadas em uma instrução sql, armazenando o // resultado em uma variável, neste exemplo $Linhas_consultada $Linhas_consulta = mysql_num_rows($consulta); 4
echo "$Linhas_consulta linhas obtidas<br>\n"; CASO II - mysql_affected_rows php $conexao = // defina o comando sql e armaze-o em uma variável, neste caso na variavel // $insercao_sql $insercao_sql = "INSERT INTO nome_tabela(campo 1, campo 2, ;campo n values (valor 1, valor 2,, valor n) // resultado em uma variável, neste exemplo $insercao, $insercao = mysql_query($insercao_sql, $conexao); // use a funçao, mysql_affected_rows(), para obter o numero de colunas // afetadas em uma instrução sql, armazenando o resultado em uma // variável, neste exemplo, $linhas_inseridas $linhas_inseridas = mysql_affected_rows($insercao); echo "$linhas_inseridas linhas inseridas<br>\n"; 2.3 Armazenando Resultados para um vetor A função mysql_fetch_array retorna uma matriz que corresponde a linha obtida e move o ponteiro interno dos dados adiante a cada vez que for chamada; retornando FALSE se não houver mais linhas $conexao = 5
// defina o comando sql e armaze-o na variavel $consulta_sql $consulta_sql = "SELECT * FROM nome_tabela"; // resultado em uma variável, neste exemplo $consulta. $consulta = mysql_query($consulta_sql, $conexao); // use a funçao, mysql_affected_rows(), para obter o numero de colunas // afetadas em uma instrução sql, armazenando o resultado em uma // variável, neste exemplo,$linhas_retornadas $linha_retornadas = mysql_fetch_array($consulta)) 2.4 Exibindo o valor das linhas retornadas Com já mencionado a função mysql_fetch_array guarda o resultado de uma consulta em um vetor. Cada linha obtida por mysql_fetch_array pode ser referenciada por sua posição na tabela ou pelo nome do campo suponha que tenhamos a tabela pessoa: Cod Nome idade 1 ze 10 2 ivo 12 3 eva 9 A coluna cod corresponde a posição 0 A coluna nomecorresponde a posição 1 A coluna idade corresponde a posição 2 // faça os procedimentos de conexão, definição do comando sql e definição // da base 6
$pass = "senha"; $conexao = mysql_connect($host,$user,$pass); $consulta_sql = "SELECT * FROM nome_tabela"; $consulta = mysql_query($consulta_sql,$conexao); // execute a funçao, mysql_fetch_array(), para guardar o resultado de uma consulta em um vetor e armazene o resultado em uma variável, neste exemplo na variável $linhas_retornadas $linha_retornadas = mysql_fetch_array($consulta)) // faça um enquanto (while) para varrer a variável, na qual foi guardado o // resultado da consulta, $linhas_retornadas, e utilizando o comando echo envie o conteúdo para o browser while($linha_retornadas = mysql_fetch_array($consulta)){ echo "Nome: $linha_retornadas [1] - Idade: $linha_retornadas [2]"; echo "<br/>"; } 3. Encerando a Conexão php mysql_close($conexao); 7