# Connecting with PHP

This guide explains how to connect a PHP application to a TimescaleDB database using the <span class="s1">**PDO extension**</span>. It covers setting up prerequisites, configuring the connection URI, and running a test SQL query.

### **Variables**

To connect to a TimescaleDB database, you only need <span class="s1">**one environment variable**</span> — the connection URI.

<table border="1" id="bkmrk-variable-description" style="width: 75.9524%; height: 76.3907px; border-collapse: collapse; border-color: rgb(0, 0, 0);"><thead><tr style="height: 29.7969px;"><th style="width: 16.1678%; height: 29.7969px; border-color: rgb(0, 0, 0);">**Variable**

</th><th style="width: 42.5457%; height: 29.7969px; border-color: rgb(0, 0, 0);">**Description**

</th><th style="width: 41.2878%; height: 29.7969px; border-color: rgb(0, 0, 0);">**Purpose**

</th></tr></thead><tbody><tr style="height: 46.5938px;"><td style="width: 16.1678%; height: 46.5938px; border-color: rgb(0, 0, 0);">`TIMESCALE_URI`

</td><td style="width: 42.5457%; height: 46.5938px; border-color: rgb(0, 0, 0);">Full TimescaleDB connection string from Elestio

</td><td style="width: 41.2878%; height: 46.5938px; border-color: rgb(0, 0, 0);">Encodes all connection info in one URI

</td></tr></tbody></table>

A typical URI looks like this:

```
postgresql://<USER>:<PASSWORD>@<HOST>:<PORT>/<DATABASE>
```

You can find the details needed in the URI from the **Elestio service overview** details. Copy and replace the variables carefully in the URI example provided above.

[![Screenshot 2025-05-13 at 12.30.16 PM.jpg](https://docs.elest.io/uploads/images/gallery/2025-05/scaled-1680-/v6xscreenshot-2025-05-13-at-12-30-16-pm.jpg)](https://docs.elest.io/uploads/images/gallery/2025-05/v6xscreenshot-2025-05-13-at-12-30-16-pm.jpg)

### **Prerequisites**

**Install PHP**

Check if PHP is installed:

```
php -v
```

If not, download and install PHP from: [https://www.php.net/downloads.php](https://www.php.net/downloads.php)

### **Code**

Once all prerequisites are set up, create a new file named `tdb.php` and add the following code and replace the `TIMESCALE_URI` with actual link or in environment setup as you wish:

```php
<?php
$db_url = getenv("TIMESCALE_URI") ?: "postgresql://user:password@host:port/database";
$db_parts = parse_url($db_url);
$db_name = ltrim($db_parts['path'], '/');
$dsn = "pgsql:host={$db_parts['host']};port={$db_parts['port']};dbname={$db_name}";

try {
    $pdo = new PDO($dsn, $db_parts['user'], $db_parts['pass']);
    $version = $pdo->query("SELECT VERSION()")->fetchColumn();
    echo "Connected to TimescaleDB: " . $version . PHP_EOL;
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage() . PHP_EOL;
}
```

To execute the script, open the terminal or command prompt and navigate to the directory where `tdb.php`. Once in the correct directory, run the script with the command

```bash
export TIMESCALE_URI=postgresql://user:password@host:port/database
```

Navigate to the directory containing `<span class="s2">tdb.php</span>` and run:

```
php tdb.php
```

If successful, you’ll see output like: