jaschweder/sql-anywhere-client

与Sybase连接的客户端

dev-master 2014-12-09 13:54 UTC

This package is not auto-updated.

Last update: 2020-01-06 17:27:11 UTC


README

用于通过PHP连接Sybase数据库的类,基于sqlanywhere库。

类基于PDO原生前缀。

待办事项

  • 测试类效率

安装

=================

1- 首先在您的PHP中安装sqlanywhere模块 点击这里!.

2- 使用composer安装包到您的项目,将以下行添加到require

// ...
"require": {
    "Jaschweder/SQLAnywhereClient": "dev-master"
},
// ...

如何使用

以下是一些使用此类的示例

连接 SQLAnywhereClient::__construct

<?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();
    }
?>

您可以在连接时定义两个初始选项,如下所示:auto_commitis_persistent.

  • auto_commit 默认自动提交,默认值为 true;
  • is_persistent 默认以持久模式定义连接,默认值为 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();
    }
?>

执行SQL命令 SQLAnywhereClient::exec()

<?php

    $sql = "SELECT * FROM Usuarios";
    $result = $con->exec( $sql );

    echo "<pre>";
    print_r($result->fetch());
    echo "</pre>";
    exit;
?>

执行带数据返回的SQL命令 SQLAnywhereClient::query()

此方法返回一个包含多个位置的数组

<?php

    $sql = "SELECT nome, email FROM Usuarios";

    foreach ($con->query( $sql ) as $resultado) {
        print_r($resultado);
    }
    exit;
?>

返回一行 SQLAnywhereQuery::fetch

返回第一行

<?php
    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );
    $usuario = $resultado->fetch();

    print_r($usuario);
    exit;
?>

数据返回格式

我们可以使用以下类 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;
?>

示例

<?php

    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );
    $usuario = $resultado->fetch( SQLAnywhereClient::FETCH_OBJECT );

    print_r($usuario);
    exit;
?>

返回所有行 SQLAnywhereQuery::fetchAll

返回所有找到的行

<?php
    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );
    $usuario = $resultado->fetchAll();

    print_r($usuario);
    exit;
?>

与上面的fetch类似,您可以使用相同的常量以不同的格式返回值,例如

<?php

    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );
    $usuario = $resultado->fetchAll( SQLAnywhereClient::FETCH_OBJECT );

    print_r($usuario);
    exit;
?>

行数 SQLAnywhereQuery::rowCount

返回找到的总行数

<?php
    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );

    echo "Foram encontrados " . $resultado->rowCount() . " registros.";
    exit;
?>

或者也可以这样

<?php
    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );

    echo "Foram encontrados " . $resultado->count() . " registros.";
    exit;
?>

列数 SQLAnywhereQuery::fieldCount

返回找到的总列数

<?php
    $sql = "SELECT nome, email FROM Usuarios";
    $resultado = $con->exec( $sql );

    echo "Foram encontrados " . $resultado->fieldCount() . " colunas na tabela.";
    exit;
?>

最后插入的ID SQLAnywhereClient::lastInsertId()

返回最后插入的ID的值

<?php
    $sql = "INSERT INTO Usuarios  nome, email VALUES ('Carlos', 'contato@carlosgartner.com.br')";
    if ($con->exec( $sql )) {
        echo $con->lastInsertId();
    }
    exit;
?>

最后插入的ID SQLAnywhereClient::lastInsertId()

返回最后插入的ID的值

<?php
    $sql = "INSERT INTO Usuarios  nome, email VALUES ('Carlos', 'contato@carlosgartner.com.br')";
    if ($con->exec( $sql )) {
        echo $con->lastInsertId();
    }
    exit;
?>

预处理语句 SQLAnywhereClient::prepare()

使用 ? 预处理SQL

<?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;
?>

使用参数名称

<?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;
?>

绑定参数 SQLAnywherePrepared::bindParam()

<?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;
?>