CONSTRUÇÃO DE PÁGINAS WEB III Prof. Antonio Miguel Faustini Zarth [email protected] PHP Conexão com BDs • O PHP pode se conectar com praticamente todo SGBD popular; • Para cada um, podem existir uma série de funções associadas como: conexão, consulta, retorno, desconexão... • Daremos ênfase em conexão ao MySQL com mysqli e PDO Preliminares • A partir daqui além do Apache e do PHP rodando, você precisará do MySQL instalado em sua máquina. Atenção <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?> Antigamente <?php $conn=mysqli_connect('localhost','usernam e','password','database'); ?> Conectando Procedural <?php $link = mysqli_connect('localhost', 'user', ‘pass', 'db'); if (!$link) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } echo 'Success... ' . mysqli_get_host_info($link) . "\n"; mysqli_close($link); ?> <?php $conn = new mysqli('localhost','username','password','database'); ?> Conectando com mysqli (POO) class foo_mysqli extends mysqli { public function __construct($host, $user, $pass, $db) { parent::__construct($host, $user, $pass, $db); if (mysqli_connect_error()) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } } } $db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db'); <?php $link = mysqli_connect("localhost", "user", "password", "world"); if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) { printf("Select returned %d rows.\n", mysqli_num_rows($result)); mysqli_free_result($result); } ?> Realizando uma consulta Procedural <?php $mysqli = new mysqli("localhost", "user", "password", "world"); if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) { printf("Select returned %d rows.\n", $result->num_rows); $result->close(); } ?> Realizando uma consulta - POO <?php $conn = new mysqli('localhost', 'root', '', 'filmes'); $sql = "SELECT * FROM filme LIMIT 5"; $query = $conn->query($sql); while ($dados = $query->fetch_array()) { echo 'Titulo: ' . $dados['titulo'] . '<br />'; echo 'Ano: ' . $dados['ano_lancamento'] . '<br /><br />'; } echo 'Registros encontrados: ' . $query->num_rows; ?> Exemplo de resultados POO <?php // mysqli_result::fetch_row -- mysqli_fetch_row // Obtém uma linha do resultado como uma matriz numerada $mysqli = new mysqli("localhost", "my_user", "my_password", "world "); $query = "SELECT Name, CountryCode FROM City ORDER by ID"; if ($result = $mysqli->query($query)) { while ($row = $result->fetch_row()) { printf ("%s (%s)\n", $row[0], $row[1]); } $result->close(); } $mysqli->close(); ?> fetch_row Diferente do mysqli_fetch_array, a função mysqli_fetch_object() irá retornar a linha atual do conjunto de resultados como um objeto aonde os atributos do objeto representam os nomes dos campos encontrados no conjunto de resultados. mysqli fetch_object <?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); $query = "SELECT Name, CountryCode FROM City ORDER by ID"; if ($result = $mysqli->query($query)) { while ($obj = $result->fetch_object()) { echo $obj->Name. “ - ”; echo $obj->CountryCode.”<br>”; } echo “Quantidade de registros: ”. $result>num_rows; $result->close(); } $mysqli->close(); ?> <?php $mysqli = new mysqli("localhost", "root", "", "teste"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "INSERT INTO tabela2 (d2) VALUES (100)"; if ($result = $mysqli->query($query)) { echo "inserido com sucesso"; } $mysqli->close(); ?> Para INSERT, UPDATE OU DELETE... <?php $mysqli = new mysqli("localhost", "root", "", “filmes"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "DELETE FROM FROM filme WHERE nome LIKE ‘Crepusculo’ "; if ($result = $mysqli->query($query)) { echo ‘Filmes excluídos: ' . $query->affected_rows; } $mysqli->close(); ?> Para INSERT, UPDATE OU DELETE... <?php class Filme { public $cod_filme; public $titulo; public $ano_lancamento; public function info() { return '<hr>#'.$this->cod_filme.': '.$this->titulo.' '.$this->ano_lancamento; } } ?> Mapeando objetos automaticamente <?php $query = "SELECT * FROM filme"; if ($result = $mysqli->query($query)) { while ($obj = $result->fetch_object('Filme')) { echo $obj->info(); } $result->close(); } ?>