我儘量把所有的數據從$_POST
到像這樣的數組:
$produk =
[
'kode'=>$_POST['kode'],
'id_kategori'=>$_POST['kategori'],
'produk'=>$_POST['produk'],
'keterangan'=>$_POST['keterangan'],
'harga'=>$_POST['harga'],
'potongan'=>$_POST['potongan'],
'jumlah'=>$_POST['jumlah'],
'berat'=>$_POST['berat'],
'warna'=>$_POST['warna'],
'ukuran'=>$_POST['ukuran']
];
,但我總是得到一個錯誤,當我試圖將其插入到一些類,得到了這樣的
(!) Fatal error: Uncaught Error: Call to a member function tambahProduk() on array in C:\wamp64\www\core\test.php on line 35
(!) Error: Call to a member function tambahProduk() on array in C:\wamp64\www\core\test.php on line 35
它做工精細,當我使用這個測試我的數據:
$data =
[
'kode' => 'abcde',
'id_kategori' => '1',
'produk' => 'Topi',
'keterangan' => 'Baju ini dibuat dengan penuh hati.',
'harga' => '250000',
'potongan' => '0',
'jumlah' => '3',
'berat' => '100',
'warna' => 'merah, kuning, hijau',
'ukuran' => 's, m, xl, xxl'
];
當我使用錯誤上$produk
我得到這個結果:
Array ([kode] => JKW001 [id_kategori] => 1 [produk] => Baju Jokowi 01 [keterangan] => Kaos oblong enak sekali dipakai [harga] => 10000 [potongan] => 2 [jumlah] => 12 [berat] => 11 [warna] => merah, kuning, hijau, biru, coklat [ukuran] => A,B,C,D,E,F,G)
這裏什麼tambahProduct函數內部:
public function tambahProduk($produk){
try{
$this->pdo->beginTransaction();
$sql = 'INSERT INTO produk
(kode_produk, id_kategori, nama_produk, keterangan, harga, potongan, jumlah_tersedia, berat)
VALUES (:kode_produk, :id_kategori, :nama_produk, :keterangan, :harga, :potongan, :jumlah_tersedia,
:berat)';
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':kode_produk', $produk['kode'], \PDO::PARAM_STR);
$stmt->bindParam(':id_kategori', $produk['id_kategori'], \PDO::PARAM_INT);
$stmt->bindParam(':nama_produk', $produk['produk'], \PDO::PARAM_STR);
$stmt->bindParam(':keterangan', $produk['keterangan'], \PDO::PARAM_STR);
$stmt->bindParam(':harga',$produk['harga'] ,\PDO::PARAM_INT);
$stmt->bindParam(':potongan', $produk['potongan'],\PDO::PARAM_INT);
$stmt->bindParam(':jumlah_tersedia',$produk['jumlah'] ,\PDO::PARAM_INT);
$stmt->bindParam(':berat',$produk['berat'] ,\PDO::PARAM_INT);
$stmt->execute();
$id_produk = $this->pdo->lastInsertId();
$sql2 = 'INSERT INTO ukuran (ukuran) VALUE (:ukuran)';
$stmt = $this->pdo->prepare($sql2);
$ukuran = explode(",",$produk['ukuran']);
$id_ukuran = [];
foreach ($ukuran as $key => $value) {
if (!empty($value)) {
$stmt->bindParam(':ukuran', $value);
$stmt->execute();
$id_ukuran[] = $this->pdo->lastInsertId();
//echo $value;
//print_r($id_ukuran);
}
}
$sql3 = 'INSERT INTO ukuran_produk (id_produk, id_ukuran) VALUES (:id_produk,:id_ukuran)';
$stmt = $this->pdo->prepare($sql3);
foreach ($id_ukuran as $key => $value) {
if (!empty($value)) {
$stmt->bindParam(':id_produk', $id_produk);
$stmt->bindParam(':id_ukuran', $value);
$stmt->execute();
}
}
$sql4 = 'INSERT INTO warna (warna) VALUE (:warna)';
$stmt = $this->pdo->prepare($sql4);
$warna = explode(",",$produk['warna']);
$id_warna = [];
foreach ($warna as $key => $value) {
if (!empty($value)) {
$stmt->bindParam(':warna', $value);
$stmt->execute();
$id_warna[] = $this->pdo->lastInsertId();
//echo $value;
//print_r($id_warna);
}
}
$sql5 = 'INSERT INTO warna_produk (id_produk, id_warna) VALUES (:id_produk,:id_warna)';
$stmt = $this->pdo->prepare($sql5);
foreach ($id_warna as $key => $value) {
if (!empty($value)) {
$stmt->bindParam(':id_produk', $id_produk);
$stmt->bindParam(':id_warna', $value);
$stmt->execute();
}
}
$this->pdo->commit();
}catch (\PDOException $e){
echo $e;
}
}
所以雖然數據是一樣什麼都能造成這些錯誤。謝謝。
該錯誤顯示調用函數'tambahProduk()'時出現問題。這是如何定義的?你想怎麼稱呼它? – akrys
如上所述,問題出在您的方法'tambahProduk()'上。你需要向我們展示'tambahProduk()'的部分代碼。 – Kitson88
@akrys,Kitson,如果問題出在可能tambahProduk()那麼它假設我調用tambahProduk($ data)時有問題,但事實並非如此。當我打電話使用tambahProduk($ produk)時,我只有問題。你不覺得問題出在$ produk上嗎? – Ying