v2.5.2
Giriş yap

Php Array Insert Nasıl Yapılır

yazilimyolcusu
961 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar. Arkadaşlar elinizde post edilen datayı, dizi şeklinde insert edebileceğim bir kod örneği var mı? veya aşağıkdaki kodlarda nerede hata yapıyorum, bakabilir misiniz?

<?php
if ($_POST['formbir']) {

  $aliciadisoyadi      = $_POST['aliciadisoyadi'];
  $alicifirma          = $_POST['alicifirma'];
  $Sehir	             = $_POST['Sehir'];
  $aliciilce           = $_POST['aliciilce'];
  $alicitelefon        = $_POST['alicitelefon'];
  $alicieposta         = $_POST['alicieposta'];
  $siparisnotlari	     = $_POST['siparisnotlari'];
  $urununstokkodu      = $_POST['urununstokkodu'];
  $urununstoksayisi	   = $_POST['urununstoksayisi'];
  
  $dizi = array(
  '$aliciadisoyadi',
  '$alicifirma',
  '$Sehir',
  '$aliciilce',
  '$alicitelefon',
  '$alicieposta',
  '$siparisnotlari',
  '$urununstokkodu',
  '$urununstoksayisi'
  );

  $onaylananurunlerigoster = $db->prepare("INSERT INTO sepetonaylanan 
  (sepetonaylanan_adisoyadi, sepetonaylanan_firmaadi, sepetonaylanan_sehiradi, 
  sepetonaylanan_ilcesemt, sepetonaylanan_telefon, sepetonaylanan_eposta, 
  sepetonaylanan_siparisnotlari, sepetonaylanan_urun_stokkodu, 
  sepetonaylanan_urun_stoksayisi) VALUES (:aliciadisoyadi, :alicifirma, :Sehir, 
  :aliciilce, :alicitelefon, :alicieposta, :siparisnotlari, :urununstokkodu, 
  :urununstoksayisi)");
  $onaylananurunlerigoster->execute([':aliciadisoyadi => $dizi[0]', 
  ':alicifirma => $dizi[1]', ':Sehir => $dizi[2]', 
  ':aliciilce => $dizi[3]', ':alicitelefon => $dizi[4]', 
  ':alicieposta => $dizi[5]', ':siparisnotlari => $dizi[6]', 
  ':urununstokkodu => $dizi[7]', 
  ':urununstoksayisi => $dizi[8]']);
  if ($onaylananurunlerigoster) {
    echo "New record created successfully";
  } else {
    echo "Failed";
  }
}
  ?>
okumusmr
933 gün önce

Merhaba @yazilimyolcusu,

Insert işlemleri için bir fonksiyon yazarak bunu çözebilirsin. Bunun için temel CRUD işlemleri yapan bir paket kullanabilirsin.
Ben böyle bir durumda aşağıdaki gibi bir yol izlerdim.

/*Veri tabanı insert işlemi. Burasının Database sınıfına ait bir fonksiyon olarak kurgulandı.
Eğer php7.4 altında bir sürüm kullanıyorsan fonksiyonun beklediği ve döndüğü değerler hataya sebep olur. 
Onları silerek hata almaktan kurtulabilirsin. (string, array, :bool)
*/
public function insert(string $table, array $data): bool
{
	$sql = [];
	foreach ($data as $key => $value) {
		$sql[] = $key . "=:" . $value;
	}
	$query = implode(", ", $sql);
	$insert = $this->db->prepare("INSERT INTO " . $table . " SET " . $query . " ");
	foreach ($data as $key => $value) {
		$insert->bindValue(':' . $key, $value);
	}
	return $insert->execute();
}

Daha sonrasında kayıt yapmak için kullanacağım yerde şu şekilde bir yol izlerdim.

/*
Data değişkeninin key değerleri tablondaki sutun değerleriyle eş olmak zorunda. 
*/
$data = [
	'aliciadisoyadi' => $_POST['aliciadisoyadi'],
	'alicifirma' => $_POST['alicifirma'],
	'Sehir' => $_POST['Sehir'],
	'aliciilce' => $_POST['aliciilce'],
	'alicitelefon' => $_POST['alicitelefon'],
	'alicieposta' => $_POST['alicieposta'],
	'siparisnotlari' => $_POST['siparisnotlari'],
	'urununstokkodu' => $_POST['urununstokkodu'],
	'urununstoksayisi' => $_POST['urununstoksayisi'],
];


$result = $db->insert('onaylanan_urunler', $data);