v2.5.2
Giriş yap

Diziyi Virgül İle Birleştirerek INSERT İşlemi

coder
685 defa görüntülendi

Merhaba.

Bir multiple select formu var. name'i mesajalan[] olan.
Ben bu formdan gelen değerleri virgül ile birleştirerek mesaj_alan_id sütununa yazdırmak istiyorum.

Ben implode ile denediğimde şu hatayı veriyor.
Data truncated for column 'mesaj_alan_id' at row 1

Bu konuda yardımcı olur musunuz?

<?php if($_POST):

    $mesajgonderen  = $_SESSION["uye_id"];
    $mesajalan      = $_POST["mesajalan"]; // Dizi olarak gelen bu veriyi mesaj_alan_id sütununa virgül ile birleştirerek yazdırmak istiyorum. Örneğin 1,2
    $mesajicerik    = $_POST["mesajicerik"];
    
    $alan = implode(",", $mesajalan);
    
    $mesaj = $db->prepare("INSERT INTO mesajlar SET mesaj_gonderen_id = :mesajgonderen, mesaj_alan_id = :mesajalan, mesaj_icerik = :mesajicerik");
    $mesaj->execute([
        ":mesajgonderen" => $mesajgonderen,
        ":mesajalan"     => $alan,
        ":mesajicerik"   => $mesajicerik
    ]);
    
    $hata = $mesaj->errorInfo();
    echo $hata[2];

else: ?>

    <form action="mesaj-gonder.php" method="post">
    	<div class="form-group">
    		<label for="mesajalan">Alıcı</label>
    		<select class="form-select form-control" name="mesajalan[]"  multiple aria-label="multiple select example">
    			<?php
    				$uyeler = $db->prepare("SELECT * FROM uyeler");
    				$uyeler->execute();
    
    				foreach ($uyeler->fetchAll(PDO::FETCH_ASSOC) as $uye):
    			?>
    				<option value="<?php echo $uye["uye_id"]; ?>"><?php echo $uye["uye_kullanici_adi"]; ?></option>
    			<?php endforeach; ?>
    		</select>
    	</div>
    	
    	<div class="form-group">
    		<label for="mesajicerik">Mesaj İçerik</label>
    		<textarea class="form-control" id="mesajicerik" name="mesajicerik" rows="3"></textarea>
    	</div>
    	<button type="submit" class="btn btn-info w-100 mt-1">Mesajı Gönder</button>
    </form>


<?php endif; ?>
qplot
1433 gün önce

ÖNCELİKLE mesaj_alan_id İNT sa TEXT veya varchar yap

boyle bır insert işlemi olmaz ondan hata alıyorsun Sen UPDATE işlemi ile karıştırmıssın

    $mesaj = $db->prepare("INSERT INTO mesajlar SET mesaj_gonderen_id = :mesajgonderen, mesaj_alan_id = :mesajalan, mesaj_icerik = :mesajicerik");

DOĞRUSU

$mesaj = $db->prepare("INSERT INTO mesajlar (mesaj_gonderen_id, mesaj_alan_id, mesaj_icerik) VALUES (:mesajgonderen,:mesajalan,:mesajicerik)") ;
    $mesaj->execute([
        ":mesajgonderen" => $mesajgonderen,
        ":mesajalan"     => $alan,
        ":mesajicerik"   => $mesajicerik
    ]);

ki bence bunca kod yazarak insert update işlemide gereksiz genel olarak bu şekilde kullanılıyor lakin bence kullanılması gereken yöntem bu

$mesaj = $db->prepare("INSERT INTO mesajlar (mesaj_gonderen_id, mesaj_alan_id, mesaj_icerik) VALUES (?,?,?)") ;
    $mesaj->execute([$mesajgonderen,$alan,$mesajicerik]);