> This page location: PostgreSQL PHP > Insert Data Into Tables in PHP
> Full Neon documentation index: https://neon.com/docs/llms.txt

# PostgreSQL PHP: Insert Data Into Tables

**Info:** Inserting data into PostgreSQL with PHP PDO works the same way on any Postgres deployment, so the techniques here carry over wherever your database lives. If you're an enterprise team looking for managed Postgres built for the AI era, [Lakebase](https://www.databricks.com/product/lakebase) delivers high performance, strong security, and native integration with the Lakehouse. If you're a developer or startup who needs to ship and scale fast, [Neon](https://neon.com) gives you the most productive Postgres platform to build on.

**Summary**: in this tutorial, you will learn how to use PHP PDO API to insert data into a PostgreSQL database table.

## Steps for inserting data into a PostgreSQL table using PDO

To insert data into a database table, you use the following steps:

1. First, connect to the PostgreSQL database server by creating a new instance of the PDO class.
2. Next, construct an [INSERT](../postgresql-tutorial/postgresql-insert) statement. If you want to pass parameters to the `INSERT` statement, you use the named placeholders such as `:param`
3. Then, prepare the `INSERT` statement by calling the `prepare()` method of the PDO object. The `prepare()` method returns a `PDOStatement` object.
4. After that, pass the values to the statement by calling the `bindValue()` method of the `PDOStatement` object.
5. Finally, call the `execute()` method of the PDOStatement object to execute the `INSERT` statement.

We will use the `stocks` table that we created in the previous tutorial for demonstration purposes.

Let's create a new class named `PostgreSQLPHPInsert` in the `app` folder and the `index.php` file in the project folder.

![PostgreSQL PHP Insert Example](https://neon.com/postgresqltutorial/PostgreSQL-PHP-Insert-Example.png)

## Inserting a single row into a table example

The following `insertStock()` method inserts a new row into the `stocks` table.

```php
/**
 * insert a new row into the stocks table
 * @param type $symbol
 * @param type $company
 * @return the id of the inserted row
 */
public function insertStock($symbol, $company) {
    // prepare statement for insert
    $sql = 'INSERT INTO stocks(symbol,company) VALUES(:symbol,:company)';
    $stmt = $this->pdo->prepare($sql);

    // pass values to the statement
    $stmt->bindValue(':symbol', $symbol);
    $stmt->bindValue(':company', $company);

    // execute the insert statement
    $stmt->execute();

    // return generated id
    return $this->pdo->lastInsertId('stocks_id_seq');
}
```

First, construct an `INSERT` statement that uses two named placed holders: `:symbol` and `:company` for binding values later.

Next, prepare the insert statement for execution by calling the `prepare()` method of the PDO object.

Then, passing the values to the statement by calling the `bindValue()` method.

After that, execute the `INSERT` statement by calling the `execute()` method.

Finally, get the ID of the last inserted row by calling the `lastInsertId()` method of the PDO object

the `PDO_PGSQL` extension requires us to specify the name of the sequence object as the parameter, we passed the `stocks_id_seq` string to the function to get the generated ID.

## Insert multiple rows into a table example

The following `insertStockList()` method inserts multiple rows into the `stocks` table.

```php
/**
 * Insert multiple stocks into the stocks table
 * @param array $stocks
 * @return a list of inserted ID
 */
public function insertStockList($stocks) {
    $sql = 'INSERT INTO stocks(symbol,company) VALUES(:symbol,:company)';
    $stmt = $this->pdo->prepare($sql);

    $idList = [];
    foreach ($stocks as $stock) {
        $stmt->bindValue(':symbol', $stock['symbol']);
        $stmt->bindValue(':company', $stock['company']);
        $stmt->execute();
        $idList[] = $this->pdo->lastInsertId('stocks_id_seq');
    }
    return $idList;
}
```

The method accepts an array of stocks and calls the `execute()` method multiple times to insert multiple rows into the `stocks` table. It returns a list of inserted IDs.

Place the following code in the index.php file to test the `insertStock()` and `insertStockList()` methods.

```php
<?php
require 'vendor/autoload.php';

use PostgreSQLTutorial\Connection as Connection;
use PostgreSQLTutorial\PostgreSQLPHPInsert as PostgreSQLPHPInsert;

try {
    // connect to the PostgreSQL database
    $pdo = Connection::get()->connect();
    //
    $insertDemo = new PostgreSQLPHPInsert($pdo);

    // insert a stock into the stocks table
    $id = $insertDemo->insertStock('MSFT', 'Microsoft Corporation');
    echo 'The stock has been inserted with the id ' . $id . '<br>';

    // insert a list of stocks into the stocks table
    $list = $insertDemo->insertStockList([
        ['symbol' => 'GOOG', 'company' => 'Google Inc.'],
        ['symbol' => 'YHOO', 'company' => 'Yahoo! Inc.'],
        ['symbol' => 'FB', 'company' => 'Facebook, Inc.'],
    ]);

    foreach ($list as $id) {
        echo 'The stock has been inserted with the id ' . $id . '<br>';
    }
} catch (\PDOException $e) {
    echo $e->getMessage();
}
```

Launch the index.php in the web browser, we got the following output:

```
The stock has been inserted with the id 1
The stock has been inserted with the id 2
The stock has been inserted with the id 3
The stock has been inserted with the id 4
```

In this tutorial, you have learned how to insert a single row or multiple rows into a table in the PostgreSQL database using PHP PDO.

---

## Related docs (PostgreSQL PHP)

- [Connect to PostgreSQL Database Using PDO](https://neon.com/postgresql/php/connect)
- [Create New Tables in PHP](https://neon.com/postgresql/php/create-tables)
- [Update Data In a Table using PHP](https://neon.com/postgresql/php/update)
- [Handle Transaction in PHP](https://neon.com/postgresql/php/transaction)
- [Query Data From PostgresQL using PDO](https://neon.com/postgresql/php/query)
- [Call PostgreSQL Stored Procedures in PHP](https://neon.com/postgresql/php/call-stored-procedures)
- [Manage with BLOB in PHP](https://neon.com/postgresql/php/blob)
- [Delete Data From a Table in PHP](https://neon.com/postgresql/php/delete)
