не может вставлять и читать данные в postgresql pdo

Я только что перенес свою базу данных из mysql в postgresql. и мой код с использованием PDO. Я искал о том, как подключиться к Postgresql с PDO, и он работает. но у меня возникают проблемы при вызове fucntion для создания данных и чтения данных. Я всегда ловлю в своем коде предупреждение «невозможно создать данные».

но когда я вызвал функцию поиска, мои данные из postgresql вышли. Пожалуйста, помогите мне решить эту проблему.

вот коды:

class barang.php

<?php
class Barang
{

// database connection and table name
private $conn;
private $table_name = "barang";

// object properties
public $id_barang;
public $nama_barang;
public $harga_satuan;

public function __construct($db){
$this->conn = $db;
}

// create barang
function create(){

// to get time-stamp for 'created' field

//write query
$query = "INSERT INTO
" . $this->table_name . "
id_barang = ?, nama_barang = ? , harga_satuan = ?";

$stmt = $this->conn->prepare($query);

$stmt->bindParam(1, $this->id_barang);
$stmt->bindParam(2, $this->nama_barang);
$stmt->bindParam(3, $this->harga_satuan);

if($stmt->execute()){
return true;
}else{
return false;
}

}

// read products
function readAll($page, $from_record_num, $records_per_page)
{

$query = "SELECT
id_barang, nama_barang, harga_satuan
FROM
" . $this->table_name . "ORDER BY
id_barang
LIMIT
{$from_record_num}, {$records_per_page}";

$stmt = $this->conn->prepare( $query );
$stmt->execute();

return $stmt;
}

function Search()
{

$query = "SELECT
id_barang, nama_barang, harga_satuan
FROM
" . $this->table_name . "WHERE
id_barang LIKE :search OR nama_barang LIKE :search ";

$stmt = $this->conn->prepare($query);
$search = $_GET['search'];
$stmt->bindValue(':search','%' . $search . '%', PDO::PARAM_STR);
$stmt->execute();

return $stmt;

}

}
?>

Оповещение не может создать ловушки данных для этого кода:

$database = new Database();
$db = $database->getConnection();

// if the form was submitted
if($_POST)
{

// instantiate barang object
include 'objects/barang.php';
$barang = new Barang($db);

// set barang property values
$barang->id_barang = $_POST['id_barang'];
$barang->nama_barang = $_POST['nama_barang'];
$barang->harga_satuan = $_POST['harga_satuan'];

// create the barang
if($barang->create()){
echo "<div class=\"alert alert-success alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>";
echo "Data barang was created.";
echo "</div>";
}

// if unable to create the barang, tell the user
else{
echo "<div class=\"alert alert-danger alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>";
echo "Unable to create barang.";
echo "</div>";
}

2

Решение

Оператор вставки с column=value series — это не стандартный SQL, это специфичный для MySQL синтаксис, который не поддерживается в PostgreSQL. Вместо этого вы должны использовать синтаксис ANSI-SQL:

$query = "INSERT INTO
" . $this->table_name . "(id_barang, nama_barang , harga_satuan) VALUES (?, ?, ?)";

РЕДАКТИРОВАТЬ:

limit Предложение MySQL также не является стандартным. В PostgreSQL синтаксис немного отличается:

$query = "SELECT
id_barang, nama_barang, harga_satuan
FROM
" . $this->table_name . "ORDER BY
id_barang
LIMIT
{$records_per_page}"OFFSET
{$from_record_num};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]