我尝试将$_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上使用Print_r时,我得到了这样的结果:
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;
}
}那么,是什么导致了这些错误,尽管数据是相同的。谢谢。
https://stackoverflow.com/questions/41406612
复制相似问题