2017-12-09 03:43:05 +01:00
< p align = "center" >
< a href = "https://amphp.org/postgres" > < img src = "https://raw.githubusercontent.com/amphp/logo/master/repos/postgres.png?v=12-07-2017" alt = "postgres" / > < / a >
< / p >
2016-09-14 16:27:39 +02:00
2017-12-09 03:43:05 +01:00
< p align = "center" >
< a href = "https://travis-ci.org/amphp/postgres" > < img src = "https://img.shields.io/travis/amphp/postgres/master.svg?style=flat-square" alt = "Build Status" / > < / a >
< a href = "https://coveralls.io/github/amphp/postgres?branch=master" > < img src = "https://img.shields.io/coveralls/amphp/postgres/master.svg?style=flat-square" alt = "Code Coverage" / > < / a >
< a href = "https://github.com/amphp/postgres/releases" > < img src = "https://img.shields.io/github/release/amphp/postgres.svg?style=flat-square" alt = "Release" / > < / a >
< a href = "https://github.com/amphp/postgres/blob/master/LICENSE" > < img src = "https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt = "License" / > < / a >
< / p >
2016-09-14 16:27:39 +02:00
2017-12-09 03:43:05 +01:00
< p align = "center" > < strong > Async PostgreSQL client built with < a href = "https://amphp.org/" > Amp< / a > .< / strong > < / p >
2016-09-14 16:27:39 +02:00
2017-12-09 03:43:05 +01:00
## Installation
2016-09-14 16:27:39 +02:00
2017-12-09 03:43:05 +01:00
This package can be installed as a [Composer ](https://getcomposer.org/ ) dependency.
2016-09-14 16:27:39 +02:00
```bash
composer require amphp/postgres
```
2017-12-09 03:43:05 +01:00
## Requirements
2016-09-14 16:27:39 +02:00
2017-12-09 03:43:05 +01:00
- PHP 7.0+
- [ext-pgsql ](https://secure.php.net/pgsql ) or [pecl-pq ](https://pecl.php.net/package/pq )
2016-09-14 16:27:39 +02:00
2018-03-01 02:00:24 +01:00
Note: [pecl-ev ](https://pecl.php.net/package/ev ) is not compatible with ext-pgsql. If you wish to use pecl-ev for the event loop backend, you must use pecl-pq.
2017-12-09 03:43:05 +01:00
## Documentation & Examples
2016-09-14 16:27:39 +02:00
2018-03-01 02:00:24 +01:00
Prepared statements and parameterized queries support named placeholders, as well as `?` and standard numeric (i.e. `$1` ) placeholders.
2017-12-09 03:43:05 +01:00
More examples can be found in the [`examples` ](examples ) directory.
2016-09-14 16:27:39 +02:00
2017-12-09 03:43:05 +01:00
```php
2018-10-15 17:44:40 +02:00
use Amp\Postgres;
use Amp\Postgres\ConnectionConfig;
2019-10-01 00:45:34 +02:00
use Amp\Sql\Statement;
2018-10-15 17:44:40 +02:00
2017-05-24 16:59:16 +02:00
Amp\Loop::run(function () {
2020-07-28 22:05:28 +02:00
$config = ConnectionConfig::fromString("host=localhost user=postgres db=test");
2018-10-15 17:44:40 +02:00
/** @var Postgres\Pool $pool */
$pool = Postgres\pool($config);
2016-09-14 16:27:39 +02:00
2019-10-01 00:45:34 +02:00
/** @var Statement $statement */
2018-03-01 02:00:24 +01:00
$statement = yield $pool->prepare("SELECT * FROM test WHERE id = :id");
2016-09-14 16:27:39 +02:00
2018-10-15 17:44:40 +02:00
/** @var Postgres\ResultSet $result */
2018-03-01 02:00:24 +01:00
$result = yield $statement->execute(['id' => 1337]);
2017-05-24 16:59:16 +02:00
while (yield $result->advance()) {
2016-09-14 16:27:39 +02:00
$row = $result->getCurrent();
// $row is an array (map) of column values. e.g.: $row['column_name']
}
});
2017-11-06 13:36:00 +01:00
```
2017-12-09 03:43:05 +01:00
## Versioning
`amphp/postgres` follows the [semver ](http://semver.org/ ) semantic versioning specification like all other `amphp` packages.
## Security
If you discover any security related issues, please email [`contact@amphp.org` ](mailto:contact@amphp.org ) instead of using the issue tracker.
## License
The MIT License (MIT). Please see [`LICENSE` ](./LICENSE ) for more information.