Docker image, TravisCI, tests
This commit is contained in:
parent
13e29eb184
commit
6c73c1ca80
77
.travis.yml
Normal file
77
.travis.yml
Normal file
|
@ -0,0 +1,77 @@
|
|||
sudo: required
|
||||
|
||||
#language: php
|
||||
#compiler: gcc
|
||||
os: linux
|
||||
dist: trusty
|
||||
|
||||
#php:
|
||||
# - '7.0'
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
#addons:
|
||||
# apt:
|
||||
# sources:
|
||||
# - ubuntu-toolchain-r-test
|
||||
# packages:
|
||||
# - gcc-5
|
||||
# - g++-5
|
||||
|
||||
env:
|
||||
global:
|
||||
- mssql_jdbc_test_connection_properties='jdbc:sqlserver://localhost:1433;databaseName=master;username=sa;password=<YourStrong!Passw0rd>;'
|
||||
- COMPILER=g++-5
|
||||
- REPORT_EXIT_STATUS=1
|
||||
- ACCEPT_EULA=Y
|
||||
- PHPSQLDIR=/REPO/msphpsql-PHP-7.0-Linux
|
||||
- SQLSERVERHOSTNAME=sql
|
||||
|
||||
before_install:
|
||||
# - php --ini
|
||||
# - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
|
||||
# - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1
|
||||
# - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1
|
||||
# - gcc --version
|
||||
# - g++ --version
|
||||
# - chmod a+x ./source/packagize.sh
|
||||
# - chmod a+x ./source/buildtest.sh
|
||||
# - apt list --installed | grep odbc
|
||||
# - sudo add-apt-repository "deb https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-xenial-release/ xenial main"
|
||||
# - sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
|
||||
# - sudo apt-get update
|
||||
# - sudo apt-get install -y msodbcsql unixodbc-dev-utf16
|
||||
- docker pull microsoft/mssql-server-linux
|
||||
|
||||
install:
|
||||
# - ./"ODBC install scripts"/installodbc_ubuntu.sh
|
||||
# - odbcinst -j
|
||||
# - odbcinst -q -d -n "ODBC Driver 13 for SQL Server"
|
||||
# - ldconfig -p | grep odbc
|
||||
# - sqlcmd -?
|
||||
- docker build --build-arg PHPSQLDIR=$PHPSQLDIR -t msphpsql-dev -f Dockerfile-msphpsql .
|
||||
- docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 --name=$SQLSERVERHOSTNAME -d microsoft/mssql-server-linux
|
||||
|
||||
before_script:
|
||||
# - echo "extension = pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
|
||||
# - echo "extension = sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
|
||||
|
||||
script:
|
||||
- docker run -e TRAVIS_JOB_ID -t -d -w $PHPSQLDIR --link $SQLSERVERHOSTNAME --name=client msphpsql-dev
|
||||
- docker ps -a
|
||||
- docker exec client php ./source/pdo_sqlsrv/run-tests.php ./test/pdo_sqlsrv/*.phpt
|
||||
- docker exec client php ./source/sqlsrv/run-tests.php ./test/sqlsrv/*.phpt
|
||||
- docker exec client coveralls -e ./source/shared/ --gcov-options '\-lp'
|
||||
- docker stop client
|
||||
- docker ps -a
|
||||
# - ./source/buildtest.sh
|
||||
# - php -info
|
||||
# - php ./source/sqlsrv/run-tests.php --show-out -p `which php` ./test/Autonomous/*.phpt
|
||||
|
||||
branches:
|
||||
only:
|
||||
- PHP-7.0-Linux
|
||||
|
||||
notifications:
|
||||
email: false
|
74
Dockerfile-msphpsql
Normal file
74
Dockerfile-msphpsql
Normal file
|
@ -0,0 +1,74 @@
|
|||
#Download base image ubuntu 16.04
|
||||
|
||||
FROM ubuntu:16.04
|
||||
|
||||
# Update Ubuntu Software repository
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && \
|
||||
apt-get -y install \
|
||||
apt-transport-https \
|
||||
apt-utils \
|
||||
autoconf \
|
||||
curl \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
lcov \
|
||||
libxml2-dev \
|
||||
locales \
|
||||
make \
|
||||
php7.0 \
|
||||
php7.0-dev \
|
||||
python-pip \
|
||||
re2c \
|
||||
unzip && apt-get clean
|
||||
|
||||
ARG PHPSQLDIR=/REPO/msphpsql-PHP-7.0-Linux
|
||||
|
||||
# set locale to utf-8
|
||||
RUN locale-gen en_US.UTF-8
|
||||
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
|
||||
|
||||
#install ODBC driver
|
||||
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
|
||||
|
||||
#RUN echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-xenial-release/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list
|
||||
#RUN apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev-utf16
|
||||
|
||||
#install coveralls
|
||||
RUN pip install --upgrade pip && pip install cpp-coveralls
|
||||
|
||||
#Either Install git / download zip (One can see other strategies : https://ryanfb.github.io/etc/2015/07/29/git_strategies_for_docker.html )
|
||||
#One option is to get source from zip file of repository.
|
||||
#replace with your repository/branch as appropriate.
|
||||
#RUN curl -sSL -o PHP-7.0-Linux.zip https://github.com/bob1913/msphpsql/archive/PHP-7.0-Linux.zip
|
||||
#RUN unzip PHP-7.0-Linux.zip -d /REPO/
|
||||
|
||||
#another option is to copy source to build directory on image
|
||||
RUN mkdir -p $PHPSQLDIR
|
||||
COPY . $PHPSQLDIR
|
||||
|
||||
WORKDIR $PHPSQLDIR/source/
|
||||
|
||||
RUN chmod +x ./packagize.sh
|
||||
RUN /bin/bash -c "./packagize.sh"
|
||||
|
||||
RUN echo "extension = pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
|
||||
RUN echo "extension = sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
|
||||
|
||||
WORKDIR $PHPSQLDIR/source/sqlsrv
|
||||
RUN phpize && ./configure LDFLAGS="-lgcov" CXXFLAGS="-O0 --coverage" && make && make install
|
||||
|
||||
WORKDIR $PHPSQLDIR/source/pdo_sqlsrv
|
||||
RUN phpize && ./configure LDFLAGS="-lgcov" CXXFLAGS="-O0 --coverage" && make && make install
|
||||
|
||||
# set name of sql server host to use
|
||||
WORKDIR $PHPSQLDIR/test/pdo_sqlsrv
|
||||
RUN sed -i -e 's/localhost/sql/g' autonomous_setup.php
|
||||
|
||||
WORKDIR $PHPSQLDIR/test/sqlsrv
|
||||
RUN sed -i -e 's/localhost/sql/g' autonomous_setup.php
|
||||
|
||||
ENV REPORT_EXIT_STATUS 1
|
||||
ENV TEST_PHP_EXECUTABLE /usr/bin/php
|
16
test/pdo_sqlsrv/autonomous_setup.php
Normal file
16
test/pdo_sqlsrv/autonomous_setup.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
// Set SQL server + user + password
|
||||
$serverName = getenv('MSSQL_SERVERNAME') ?: "localhost";
|
||||
$username = getenv('MSSQL_USERNAME') ?: "sa";
|
||||
$password = getenv('MSSQL_PASSWORD') ?: "<YourStrong!Passw0rd>";
|
||||
|
||||
|
||||
// Generate unique DB name, example: php_20160817_1471475608267
|
||||
$dbName = "php_" . date("Ymd") . "_" . round(microtime(true)*1000);
|
||||
|
||||
// Generic table name example: php_20160817_1471475608267.dbo.php_firefly
|
||||
$tableName = $dbName.".dbo.php_firefly";
|
||||
|
||||
// Connection options
|
||||
$connectionInfo = array("UID"=>"$username", "PWD"=>"$password");
|
||||
?>
|
34
test/pdo_sqlsrv/pdo_002_connect_app.phpt
Normal file
34
test/pdo_sqlsrv/pdo_002_connect_app.phpt
Normal file
|
@ -0,0 +1,34 @@
|
|||
--TEST--
|
||||
Connection option APP name unicode
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$appName = "APP_PoP_银河";
|
||||
|
||||
// Connect
|
||||
$conn = new PDO("sqlsrv:server=$serverName;APP=$appName","$username","$password");
|
||||
|
||||
// Query and Fetch
|
||||
$query = "SELECT APP_NAME()";
|
||||
|
||||
$stmt = $conn->query($query);
|
||||
while ( $row = $stmt->fetch(PDO::FETCH_NUM) ){
|
||||
echo $row[0]."\n";
|
||||
}
|
||||
|
||||
$stmt = $conn->query($query);
|
||||
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ){
|
||||
echo $row['']."\n";
|
||||
}
|
||||
|
||||
// Free the connection
|
||||
$conn=null;
|
||||
echo "Done"
|
||||
?>
|
||||
|
||||
--EXPECTREGEX--
|
||||
APP_PoP_银河
|
||||
APP_PoP_银河
|
||||
Done
|
55
test/pdo_sqlsrv/pdo_011_quote.phpt
Normal file
55
test/pdo_sqlsrv/pdo_011_quote.phpt
Normal file
|
@ -0,0 +1,55 @@
|
|||
--TEST--
|
||||
Insert with quoted parameters
|
||||
--SKIPIF--
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
// Connect
|
||||
$conn = new PDO( "sqlsrv:server=$serverName", "$username", "$password" );
|
||||
|
||||
$param = 'a \' g';
|
||||
$param2 = $conn->quote( $param );
|
||||
|
||||
// CREATE database
|
||||
$conn->query("CREATE DATABASE ". $dbName) ?: die();
|
||||
|
||||
// Create table
|
||||
$query = "CREATE TABLE ".$tableName." (col1 VARCHAR(10), col2 VARCHAR(20))";
|
||||
$stmt = $conn->query($query);
|
||||
if( $stmt === false ) { die(); }
|
||||
|
||||
// Inserd data
|
||||
$query = "INSERT INTO $tableName VALUES( ?, '1' )";
|
||||
$stmt = $conn->prepare( $query );
|
||||
$stmt->execute(array($param));
|
||||
|
||||
// Inserd data
|
||||
$query = "INSERT INTO $tableName VALUES( ?, ? )";
|
||||
$stmt = $conn->prepare( $query );
|
||||
$stmt->execute(array($param, $param2));
|
||||
|
||||
// Query
|
||||
$query = "SELECT * FROM $tableName";
|
||||
$stmt = $conn->query($query);
|
||||
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
|
||||
print_r( $row['col1'] ." was inserted\n" );
|
||||
}
|
||||
|
||||
// Revert the inserts
|
||||
$query = "delete from $tableName where col1 = ?";
|
||||
$stmt = $conn->prepare( $query );
|
||||
$stmt->execute(array($param));
|
||||
|
||||
// DROP database
|
||||
$conn->query("DROP DATABASE ". $dbName) ?: die();
|
||||
|
||||
//free the statement and connection
|
||||
$stmt=null;
|
||||
$conn=null;
|
||||
?>
|
||||
--EXPECT--
|
||||
a ' g was inserted
|
||||
a ' g was inserted
|
||||
|
30
test/pdo_sqlsrv/pdo_012_bind_param.phpt
Normal file
30
test/pdo_sqlsrv/pdo_012_bind_param.phpt
Normal file
|
@ -0,0 +1,30 @@
|
|||
--TEST--
|
||||
uses an input/output parameter
|
||||
--SKIPIF--
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$dbh = new PDO( "sqlsrv:server=$serverName", "$username", "$password" );
|
||||
|
||||
// CREATE database
|
||||
$dbh->query("CREATE DATABASE ". $dbName) ?: die();
|
||||
|
||||
$dbh->query("IF OBJECT_ID('dbo.sp_ReverseString', 'P') IS NOT NULL DROP PROCEDURE dbo.sp_ReverseString");
|
||||
$dbh->query("CREATE PROCEDURE dbo.sp_ReverseString @String as VARCHAR(2048) OUTPUT as SELECT @String = REVERSE(@String)");
|
||||
$stmt = $dbh->prepare("EXEC dbo.sp_ReverseString ?");
|
||||
$string = "123456789";
|
||||
$stmt->bindParam(1, $string, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 2048);
|
||||
$stmt->execute();
|
||||
print "Result: ".$string."\n"; // Expect 987654321
|
||||
|
||||
// DROP database
|
||||
$dbh->query("DROP DATABASE ". $dbName) ?: die();
|
||||
|
||||
//free the statement and connection
|
||||
$stmt = null;
|
||||
$dbh = null;
|
||||
?>
|
||||
--EXPECT--
|
||||
Result: 987654321
|
60
test/pdo_sqlsrv/pdo_013_row_count.phpt
Normal file
60
test/pdo_sqlsrv/pdo_013_row_count.phpt
Normal file
|
@ -0,0 +1,60 @@
|
|||
--TEST--
|
||||
Number of rows in a result set
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$conn = new PDO( "sqlsrv:server=$serverName", "$username", "$password" );
|
||||
|
||||
// CREATE database
|
||||
$conn->query("CREATE DATABASE ". $dbName) ?: die();
|
||||
|
||||
// Create table
|
||||
$stmt = $conn->query("CREATE TABLE ".$tableName." (c1 VARCHAR(32))");
|
||||
$stmt=null;
|
||||
|
||||
// Insert data
|
||||
$query = "INSERT INTO ".$tableName." VALUES ('Salmon'),('Butterfish'),('Cod'),('NULL'),('Crab')";
|
||||
$stmt = $conn->query($query);
|
||||
$res[] = $stmt->rowCount();
|
||||
|
||||
// Update data
|
||||
$query = "UPDATE ".$tableName." SET c1='Salmon' WHERE c1='Cod'";
|
||||
$stmt = $conn->query($query);
|
||||
$res[] = $stmt->rowCount();
|
||||
|
||||
// Update data
|
||||
$query = "UPDATE ".$tableName." SET c1='Salmon' WHERE c1='NULL'";
|
||||
$stmt = $conn->query($query);
|
||||
$res[] = $stmt->rowCount();
|
||||
|
||||
// Update data
|
||||
$query = "UPDATE ".$tableName." SET c1='Salmon' WHERE c1='NO_NAME'";
|
||||
$stmt = $conn->query($query);
|
||||
$res[] = $stmt->rowCount();
|
||||
|
||||
// Update data
|
||||
$query = "UPDATE ".$tableName." SET c1='N/A'";
|
||||
$stmt = $conn->query($query);
|
||||
$res[] = $stmt->rowCount();
|
||||
|
||||
print_r($res);
|
||||
|
||||
// DROP database
|
||||
$conn->query("DROP DATABASE ". $dbName) ?: die();
|
||||
|
||||
$stmt=null;
|
||||
$conn=null;
|
||||
print "Done"
|
||||
?>
|
||||
--EXPECT--
|
||||
Array
|
||||
(
|
||||
[0] => 5
|
||||
[1] => 1
|
||||
[2] => 1
|
||||
[3] => 0
|
||||
[4] => 5
|
||||
)
|
||||
Done
|
16
test/sqlsrv/autonomous_setup.php
Normal file
16
test/sqlsrv/autonomous_setup.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
// Set SQL server + user + password
|
||||
$serverName = getenv('MSSQL_SERVERNAME') ?: "localhost";
|
||||
$username = getenv('MSSQL_USERNAME') ?: "sa";
|
||||
$password = getenv('MSSQL_PASSWORD') ?: "<YourStrong!Passw0rd>";
|
||||
|
||||
|
||||
// Generate unique DB name, example: php_20160817_1471475608267
|
||||
$dbName = "php_" . date("Ymd") . "_" . round(microtime(true)*1000);
|
||||
|
||||
// Generic table name example: php_20160817_1471475608267.dbo.php_firefly
|
||||
$tableName = $dbName.".dbo.php_firefly";
|
||||
|
||||
// Connection options
|
||||
$connectionInfo = array("UID"=>"$username", "PWD"=>"$password");
|
||||
?>
|
21
test/sqlsrv/srv_001.phpt
Normal file
21
test/sqlsrv/srv_001.phpt
Normal file
|
@ -0,0 +1,21 @@
|
|||
--TEST--
|
||||
Connect to the default database with credentials
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password" );
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo );
|
||||
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
Done
|
21
test/sqlsrv/srv_002.phpt
Normal file
21
test/sqlsrv/srv_002.phpt
Normal file
|
@ -0,0 +1,21 @@
|
|||
--TEST--
|
||||
Connect with options
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array("Database"=>"master", "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
Done
|
52
test/sqlsrv/srv_012_sqlsrv_fetch_array.phpt
Normal file
52
test/sqlsrv/srv_012_sqlsrv_fetch_array.phpt
Normal file
|
@ -0,0 +1,52 @@
|
|||
--TEST--
|
||||
sqlsrv_fetch_array() using a scrollable cursor
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
// Connect
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
|
||||
|
||||
// Create database
|
||||
sqlsrv_query($conn,"CREATE DATABASE ". $dbName) ?: die();
|
||||
|
||||
// Create table
|
||||
$query = "CREATE TABLE $tableName (ID VARCHAR(10))";
|
||||
$stmt = sqlsrv_query($conn, $query);
|
||||
|
||||
$query = "INSERT INTO $tableName VALUES ('1998.1'),('-2004'),('2016'),('4.2EUR')";
|
||||
$stmt = sqlsrv_query($conn, $query) ?: die( print_r( sqlsrv_errors(), true) );
|
||||
|
||||
// Fetch data
|
||||
$query = "SELECT ID FROM $tableName";
|
||||
$stmt = sqlsrv_query($conn, $query, [], array("Scrollable"=>"buffered"))
|
||||
?: die( print_r(sqlsrv_errors(), true));
|
||||
|
||||
// Fetch first row
|
||||
$row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC,SQLSRV_SCROLL_NEXT);
|
||||
echo $row['ID']."\n";
|
||||
|
||||
// Fetch third row
|
||||
$row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC,SQLSRV_SCROLL_ABSOLUTE,2);
|
||||
echo $row['ID']."\n";
|
||||
|
||||
// Fetch last row
|
||||
$row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC,SQLSRV_SCROLL_LAST);
|
||||
echo $row['ID']."\n";
|
||||
|
||||
// DROP database
|
||||
$stmt = sqlsrv_query($conn,"DROP DATABASE ". $dbName);
|
||||
|
||||
sqlsrv_free_stmt($stmt);
|
||||
sqlsrv_close($conn);
|
||||
print "Done"
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
1998.1
|
||||
2016
|
||||
4.2EUR
|
||||
Done
|
53
test/sqlsrv/srv_014_sqlsrv_get_field.phpt
Normal file
53
test/sqlsrv/srv_014_sqlsrv_get_field.phpt
Normal file
|
@ -0,0 +1,53 @@
|
|||
--TEST--
|
||||
sqlsrv_get_field() using SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY)
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
// Connect
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
|
||||
|
||||
// Create database
|
||||
sqlsrv_query($conn,"CREATE DATABASE ". $dbName) ?: die();
|
||||
|
||||
// Create table
|
||||
$query = "CREATE TABLE ".$tableName." (ID VARCHAR(10))";
|
||||
$stmt = sqlsrv_query($conn, $query);
|
||||
|
||||
$query = "INSERT INTO ".$tableName." VALUES ('1998.1'),('-2004.2436'),('4.2EUR')";
|
||||
$stmt = sqlsrv_query($conn, $query) ?: die( print_r( sqlsrv_errors(), true) );
|
||||
|
||||
// Fetch data
|
||||
$query = "SELECT * FROM ".$tableName;
|
||||
$stmt = sqlsrv_query( $conn, $query ) ?: die( print_r( sqlsrv_errors(), true) );
|
||||
|
||||
while(sqlsrv_fetch($stmt)) {
|
||||
$field = sqlsrv_get_field($stmt,0,SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));
|
||||
var_dump($field);
|
||||
|
||||
while(!feof($field))
|
||||
{
|
||||
echo fread($field, 100)."\n";
|
||||
}
|
||||
}
|
||||
|
||||
// DROP database
|
||||
$stmt = sqlsrv_query($conn,"DROP DATABASE ". $dbName);
|
||||
|
||||
sqlsrv_free_stmt($stmt);
|
||||
sqlsrv_close($conn);
|
||||
|
||||
print "Done"
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
resource(10) of type (stream)
|
||||
1998.1
|
||||
resource(11) of type (stream)
|
||||
-2004.2436
|
||||
resource(12) of type (stream)
|
||||
4.2EUR
|
||||
Done
|
97
test/sqlsrv/srv_031_sqlsrv_field_metadata.phpt
Normal file
97
test/sqlsrv/srv_031_sqlsrv_field_metadata.phpt
Normal file
|
@ -0,0 +1,97 @@
|
|||
--TEST--
|
||||
sqlsrv_field_metadata() VARCHAR(n), NVARCHAR(n), INT
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
// Connect
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
|
||||
|
||||
// Create database
|
||||
sqlsrv_query($conn,"CREATE DATABASE ". $dbName) ?: die();
|
||||
|
||||
// Create table
|
||||
$stmt = sqlsrv_query($conn, "create table ".$tableName." (FirstName VARCHAR(10), LastName NVARCHAR(20), Age INT)");
|
||||
if( $stmt === false ) { die( print_r( sqlsrv_errors(), true )); }
|
||||
sqlsrv_free_stmt( $stmt);
|
||||
|
||||
// Insert data
|
||||
$sql = "INSERT INTO ".$tableName." VALUES ('John', 'Doe', 30)";
|
||||
$stmt = sqlsrv_query( $conn, $sql);
|
||||
sqlsrv_free_stmt( $stmt);
|
||||
|
||||
// Insert data
|
||||
$sql = "INSERT INTO ".$tableName." VALUES ('Nhoj', N'Eoduard', -3),('Vi Lo', N'N/A', 1987)";
|
||||
$stmt = sqlsrv_query($conn, $sql);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
// Prepare the statement
|
||||
$query = "SELECT FirstName, LastName, Age FROM ".$tableName;
|
||||
$stmt = sqlsrv_prepare($conn, $query);
|
||||
|
||||
// Get field metadata
|
||||
foreach( sqlsrv_field_metadata( $stmt) as $fieldMetadata)
|
||||
$res[] = $fieldMetadata;
|
||||
|
||||
var_dump($res);
|
||||
|
||||
// DROP database
|
||||
$stmt = sqlsrv_query($conn,"DROP DATABASE ". $dbName);
|
||||
|
||||
sqlsrv_free_stmt( $stmt);
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
array(3) {
|
||||
[0]=>
|
||||
array(6) {
|
||||
["Name"]=>
|
||||
string(9) "FirstName"
|
||||
["Type"]=>
|
||||
int(12)
|
||||
["Size"]=>
|
||||
int(10)
|
||||
["Precision"]=>
|
||||
NULL
|
||||
["Scale"]=>
|
||||
NULL
|
||||
["Nullable"]=>
|
||||
int(1)
|
||||
}
|
||||
[1]=>
|
||||
array(6) {
|
||||
["Name"]=>
|
||||
string(8) "LastName"
|
||||
["Type"]=>
|
||||
int(-9)
|
||||
["Size"]=>
|
||||
int(20)
|
||||
["Precision"]=>
|
||||
NULL
|
||||
["Scale"]=>
|
||||
NULL
|
||||
["Nullable"]=>
|
||||
int(1)
|
||||
}
|
||||
[2]=>
|
||||
array(6) {
|
||||
["Name"]=>
|
||||
string(3) "Age"
|
||||
["Type"]=>
|
||||
int(4)
|
||||
["Size"]=>
|
||||
NULL
|
||||
["Precision"]=>
|
||||
int(10)
|
||||
["Scale"]=>
|
||||
NULL
|
||||
["Nullable"]=>
|
||||
int(1)
|
||||
}
|
||||
}
|
||||
Done
|
41
test/sqlsrv/srv_073_database.phpt
Normal file
41
test/sqlsrv/srv_073_database.phpt
Normal file
|
@ -0,0 +1,41 @@
|
|||
--TEST--
|
||||
PHPT Create/drop database
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
// Check if connected
|
||||
if( !$conn ) { die( print_r( sqlsrv_errors(), true)); }
|
||||
|
||||
// Set database name
|
||||
$dbUniqueName = "php_uniqueDB01";
|
||||
|
||||
// DROP database if exists
|
||||
$stmt = sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
if($stmt === false){ die( print_r( sqlsrv_errors(), true )); }
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
// CREATE database
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
if($stmt === false){ die( print_r( sqlsrv_errors(), true )); }
|
||||
echo "DATABASE CREATED\n";
|
||||
|
||||
// DROP database
|
||||
$stmt = sqlsrv_query($conn,"DROP DATABASE ". $dbUniqueName);
|
||||
if($stmt === false){ die( print_r( sqlsrv_errors(), true )); }
|
||||
echo "DATABASE DROPPED\n";
|
||||
|
||||
sqlsrv_free_stmt($stmt);
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
DATABASE CREATED
|
||||
DATABASE DROPPED
|
||||
Done
|
62
test/sqlsrv/srv_074_create_existing_database.phpt
Normal file
62
test/sqlsrv/srv_074_create_existing_database.phpt
Normal file
|
@ -0,0 +1,62 @@
|
|||
--TEST--
|
||||
Create database that already exists
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
// Check if connected
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
// Set database name
|
||||
$dbUniqueName = "uniqueDB01";
|
||||
|
||||
// DROP database if exists
|
||||
$stmt = sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
|
||||
// CREATE database
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
|
||||
if( $stmt === false)
|
||||
{
|
||||
printf("%-20s%10s\n","CREATE DATABASE","FAILED");
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
|
||||
|
||||
// CREATE database that already exists
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
var_dump($stmt);
|
||||
if( $stmt === false)
|
||||
{
|
||||
$res = array_values(sqlsrv_errors());
|
||||
var_dump($res[0]['SQLSTATE']);
|
||||
var_dump($res[0][1]);
|
||||
// var_dump($res[0][2]);
|
||||
}
|
||||
else {
|
||||
printf("%-20s\n","ERROR: CREATE database MUST return bool(false)");
|
||||
}
|
||||
|
||||
// DROP database
|
||||
sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
string(5) "42000"
|
||||
int(1801)
|
||||
Done
|
62
test/sqlsrv/srv_074_database.phpt
Normal file
62
test/sqlsrv/srv_074_database.phpt
Normal file
|
@ -0,0 +1,62 @@
|
|||
--TEST--
|
||||
PHPT Create database that already exists
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
// Check if connected
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
// Set database name
|
||||
$dbUniqueName = "uniqueDB01";
|
||||
|
||||
// DROP database if exists
|
||||
$stmt = sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
|
||||
// CREATE database
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
|
||||
if( $stmt === false)
|
||||
{
|
||||
printf("%-20s%10s\n","CREATE DATABASE","FAILED");
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
|
||||
|
||||
// CREATE database that already exists
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
var_dump($stmt);
|
||||
if( $stmt === false)
|
||||
{
|
||||
$res = array_values(sqlsrv_errors());
|
||||
var_dump($res[0]['SQLSTATE']);
|
||||
var_dump($res[0][1]);
|
||||
// var_dump($res[0][2]);
|
||||
}
|
||||
else {
|
||||
printf("%-20s\n","ERROR: CREATE database MUST return bool(false)");
|
||||
}
|
||||
|
||||
// DROP database
|
||||
sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
string(5) "42000"
|
||||
int(1801)
|
||||
Done
|
61
test/sqlsrv/srv_074_database_wide_string.phpt
Normal file
61
test/sqlsrv/srv_074_database_wide_string.phpt
Normal file
|
@ -0,0 +1,61 @@
|
|||
--TEST--
|
||||
PHPT Create database that already exists
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
// Check if connected
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
// Set database name
|
||||
$dbUniqueName = "uniqueDB01";
|
||||
|
||||
// DROP database if exists
|
||||
$stmt = sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
|
||||
// CREATE database
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
|
||||
if( $stmt === false)
|
||||
{
|
||||
printf("%-20s%10s\n","CREATE DATABASE","FAILED");
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
|
||||
|
||||
// CREATE database that already exists
|
||||
$stmt = sqlsrv_query($conn,"CREATE DATABASE ". $dbUniqueName);
|
||||
var_dump($stmt);
|
||||
if( $stmt === false)
|
||||
{
|
||||
$res = array_values(sqlsrv_errors());
|
||||
var_dump($res[0]['SQLSTATE']);
|
||||
var_dump($res[0][1]);
|
||||
}
|
||||
else {
|
||||
printf("%-20s\n","ERROR: CREATE database MUST return bool(false)");
|
||||
}
|
||||
|
||||
// DROP database
|
||||
sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
string(5) "42000"
|
||||
int(1801)
|
||||
Done
|
44
test/sqlsrv/srv_075_database.phpt
Normal file
44
test/sqlsrv/srv_075_database.phpt
Normal file
|
@ -0,0 +1,44 @@
|
|||
--TEST--
|
||||
PHPT Drop missing database
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
// Check if connected
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
// Set database name
|
||||
$dbUniqueName = "uniqueDB01";
|
||||
|
||||
// DROP database if exists
|
||||
$stmt = sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
// DROP missing database
|
||||
$stmt = sqlsrv_query($conn,"DROP DATABASE ". $dbUniqueName);
|
||||
var_dump($stmt);
|
||||
if( $stmt === false )
|
||||
{
|
||||
$res = array_values(sqlsrv_errors());
|
||||
var_dump($res[0]['code']);
|
||||
}
|
||||
else {
|
||||
printf("%-20s\n","ERROR: DROP missing database MUST return bool(false)");
|
||||
}
|
||||
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
int(3701)
|
||||
Done
|
49
test/sqlsrv/srv_075_database_wide_string.phpt
Normal file
49
test/sqlsrv/srv_075_database_wide_string.phpt
Normal file
|
@ -0,0 +1,49 @@
|
|||
--TEST--
|
||||
PHPT Drop missing database
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("autonomous_setup.php");
|
||||
|
||||
$connectionInfo = array( "UID"=>"$username", "PWD"=>"$password");
|
||||
$conn = sqlsrv_connect( $serverName, $connectionInfo);
|
||||
|
||||
// Check if connected
|
||||
if( !$conn ) {
|
||||
echo "Connection could not be established.\n";
|
||||
die( print_r( sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
// Set database name
|
||||
$dbUniqueName = "uniqueDB01_银河系";
|
||||
|
||||
// DROP database if exists
|
||||
$stmt = sqlsrv_query($conn,"IF EXISTS(SELECT name FROM sys.databases WHERE name = '"
|
||||
.$dbUniqueName."') DROP DATABASE ".$dbUniqueName);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
// DROP missing database
|
||||
$stmt = sqlsrv_query($conn,"DROP DATABASE ". $dbUniqueName);
|
||||
var_dump($stmt);
|
||||
if( $stmt === false )
|
||||
{
|
||||
$res = array_values(sqlsrv_errors());
|
||||
var_dump($res[0]['SQLSTATE']);
|
||||
var_dump($res[0][1]);
|
||||
var_dump($res[0][2]);
|
||||
|
||||
}
|
||||
else {
|
||||
printf("%-20s\n","ERROR: DROP missing database MUST return bool(false)");
|
||||
}
|
||||
|
||||
sqlsrv_close($conn);
|
||||
print "Done";
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
string(5) "42S02"
|
||||
int(3701)
|
||||
string(159) "[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Cannot drop the database 'uniqueDB01_银河系', because it does not exist or you do not have permission."
|
||||
Done
|
Loading…
Reference in a new issue