Classe para conexão com banco de dados Sybase com PHP baseada na biblioteca sqlanywhere.
Classe foi baseada na Classe Nativa do PDO.
TODO:
- Testar classe com eficácia
=================
1- Primeiro instale o modulo do sqlanywhere em seu PHP Clincando aqui!.
2- Use o composer para instalar o package ao seu projeto adicionado a linha abaixo ao require
:
// ...
"require": {
"Jaschweder/SQLAnywhereClient": "dev-master"
},
// ...
Abaixo você ve alguns exemplos de como usar a classe:
<?php
require '../vendor/autoload.php';
use Jaschweder\SQLAnywhereClient;
try {
$dns = "uid={usuario};pwd={senha};ENG={nome-do-banco};commlinks=tcpip{host={seu-host};port={sua-porta}}";
$con = new SQLAnywhereClient( $dns );
} catch (Exception $e) {
echo $e->getMessage();
}
?>
Você pode definir duas opções iniciais junto com a conexão, que são as seguintes: auto_commit
e is_persistent
.
auto_commit
Ativa os commits automaticamente por padrão étrue
;is_persistent
Define conexão no modo persistente por padrão éfalse
;
<?php
require '../vendor/autoload.php';
use Jaschweder\SQLAnywhereClient;
try {
$dns = "uid={uid};pwd={senha};ENG={};commlinks=tcpip{host={seuuhost};port={suasenha}}";
$autocommit = false;
$persistent = true;
$con = new SQLAnywhereClient( $dns, $autocommit, $persistent );
} catch (Exception $e) {
echo $e->getMessage();
}
?>
<?php
$sql = "SELECT * FROM Usuarios";
$result = $con->exec( $sql );
echo "<pre>";
print_r($result->fetch());
echo "</pre>";
exit;
?>
Método retornar um array com várias posições
<?php
$sql = "SELECT nome, email FROM Usuarios";
foreach ($con->query( $sql ) as $resultado) {
print_r($resultado);
}
exit;
?>
Retornar a primeira linha
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
$usuario = $resultado->fetch();
print_r($usuario);
exit;
?>
Podemos escolher o formato dos dados no retorno com as seguintes constantes da classe SQLAnywhereClient
<?php
// Retornar em um array com idexação por numero e coluna
SQLAnywhereClient::FETCH_ARRAY;
// Retornar em um array com idexação por coluna
SQLAnywhereClient::FETCH_ASSOC; // Formato Padrão!
// Retornar em um array com idexação por coluna
SQLAnywhereClient::FETCH_OBJECT;
// Retornar em um array com idexação por linha de dados
SQLAnywhereClient::FETCH_ROW;
// Retornar em um array com idexação por colunas
SQLAnywhereClient::FETCH_FIELD;
?>
Exemplo:
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
$usuario = $resultado->fetch( SQLAnywhereClient::FETCH_OBJECT );
print_r($usuario);
exit;
?>
Retornar Todas as linhas encontradas
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
$usuario = $resultado->fetchAll();
print_r($usuario);
exit;
?>
Como no caso assima do fetch, você pode retornar os valores em diferentes formatos utilizando as mesmas constantes, exemplo:
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
$usuario = $resultado->fetchAll( SQLAnywhereClient::FETCH_OBJECT );
print_r($usuario);
exit;
?>
Retornar o total de linhas encontradas
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
echo "Foram encontrados " . $resultado->rowCount() . " registros.";
exit;
?>
Ou também da seguinte maneira:
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
echo "Foram encontrados " . $resultado->count() . " registros.";
exit;
?>
Retornar o total de colunas encontradas
<?php
$sql = "SELECT nome, email FROM Usuarios";
$resultado = $con->exec( $sql );
echo "Foram encontrados " . $resultado->fieldCount() . " colunas na tabela.";
exit;
?>
Retorna o último o valor do último id inserido na conexão
<?php
$sql = "INSERT INTO Usuarios nome, email VALUES ('Carlos', 'contato@carlosgartner.com.br')";
if ($con->exec( $sql )) {
echo $con->lastInsertId();
}
exit;
?>
Retorna o último o valor do último id inserido na conexão
<?php
$sql = "INSERT INTO Usuarios nome, email VALUES ('Carlos', 'contato@carlosgartner.com.br')";
if ($con->exec( $sql )) {
echo $con->lastInsertId();
}
exit;
?>
Preparar sql usando ?
:
<?php
$sql = "INSERT INTO Usuarios nome, email VALUES (?, ?)";
$stmnt = $con->prepare( $sql );
if ($stmnt->execute(array('Carlos', 'contato@carlosgartner.com.br'))) {
echo $con->lastInsertId();
}
exit;
?>
E usando nomes para os parametros:
<?php
$sql = "INSERT INTO Usuarios nome, email VALUES (:nome, :email)";
$stmnt = $con->prepare( $sql );
if ($stmnt->execute(array(
':nome' => 'Carlos',
':email' => 'contato@carlosgartner.com.br'
))) {
echo $con->lastInsertId();
}
exit;
?>
<?php
$sql = "INSERT INTO Usuarios nome, email VALUES (:nome, :email)";
$stmnt = $con->prepare( $sql );
$nome = "Carlos A.";
$email = "contato@carlosgartner.com.br";
$stmnt->bindParam(':nome', $nome);
$stmnt->bindParam(':email', $email);
if ($stmnt->execute()) {
echo $con->lastInsertId();
}
exit;
?>