• 15-06-2019, 21:45:17
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba, veritabanına upload işlemi yapıyorum fakat hata alıyorum.
    Kodlar;

       <?
    if($_POST){
    if ($_FILES["port_resim"]["size"]<1024*1024){//Dosya boyutu 1Mb tan az olsun
    if ($_FILES["port_resim"]["type"]=="image/png"){ //dosya tipi jpeg olsun
    $port_link = $_POST["port_link"];
    $port_filter = $_POST["port_filter"];
    $dosya_adi = $_FILES["port_resim"]["name"];
    //Resimi kayıt ederken yeni bir isim oluşturalım
    $uret=array("as","rt","ty","yu","fg");
    $uzanti=substr($dosya_adi,-4,4);
    $sayi_tut=rand(1,10000);
    $yeni_ad="../image/".$uret[rand(0,4)].$sayi_tut.$uzanti;
    //Dosya yeni adıyla uploadklasorune kaydedilecek
    if (move_uploaded_file($_FILES["port_resim"]["tmp_name"],$yeni_ad)){
    echo 'Dosya başarıyla yüklendi.';
    //Bilgileri veritabanına kayıt ediyoruz..
    $sorgu = $db->prepare("INSERT INTO portfoy SET port_resim=:port_resim,port_link=:port_link,port_filter=:port_filter");
    143. Satır -> $sorgu->execute(array(':port_resim'=> $yeni_ad,':port_link'=>$port_link));
    if ($sorgu){
    echo 'Veritabanına kaydedildi.';
    }else{
    echo 'Kayıt sırasında hata oluştu!';
    }
    }else{
    echo 'Dosya Yüklenemedi!';
    }
    }else{
    echo 'Dosya yalnızca jpeg formatında olabilir!';
    }
    }else{
    echo 'Dosya boyutu 1 Mb ı geçemez!';
    }
    }
    ?>
    Aldığım hata;
    Dosya başarıyla yüklendi.
    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:AppServwwwsponsorpeksenpanelportfoy.php on line 143
    Veritabanına kaydedildi.

    Görseli klasöre vs. kaydediyor ama veritabanına kaydetmiyor.
  • 15-06-2019, 21:49:37
    #2
    Satır -> $sorgu->execute(array(':port_resim'=> $yeni_ad,':port_link'=>$port_link)); buraya bir de port_filter=:port_filte ricin bir parametre eklemen lazim sanki port filter NULL olamaz demis olabilirsin cunku
  • 15-06-2019, 21:52:39
    #3
    asiminnesli adlı üyeden alıntı: mesajı görüntüle
    Satır -> $sorgu->execute(array('ort_resim'=> $yeni_ad,'ort_link'=>$port_link)); buraya bir de port_filter=ort_filte ricin bir parametre eklemen lazim sanki port filter NULL olamaz demis olabilirsin cunku
    Hata düzeldi çok sağolun hocam

    Hocam peki başka bir şey daha sorabilir miyim?

    $yeni_ad="../image/".$uret[rand(0,4)].$sayi_tut.$uzanti; satırı bu şekilde image klasörüm dizinde fakat veritabanına kayıt ederken ../image/ty8483.png şeklinde kaydediyor. O noktaları nasıl kaldırabilirim? Kafam durdu sabahtan beri @asiminnesli;
  • 15-06-2019, 22:28:39
    #4
    PHP & Flutter & Laravel
    ScriptEvin adlı üyeden alıntı: mesajı görüntüle
    Hata düzeldi çok sağolun hocam

    Hocam peki başka bir şey daha sorabilir miyim?

    $yeni_ad="../image/".$uret[rand(0,4)].$sayi_tut.$uzanti; satırı bu şekilde image klasörüm dizinde fakat veritabanına kayıt ederken ../image/ty8483.png şeklinde kaydediyor. O noktaları nasıl kaldırabilirim? Kafam durdu sabahtan beri @asiminnesli;
    Veritabanına kayıt ederken $yeni_ad yazan kısmı şununla değiştirin, bu işlem $yeni_ad değişkeninin ilk üç karakterini (../) kaldırmaya yarar
    substr($yeni_ad, 3)
    Yani şöyle olacak
    port_resim'=> substr($yeni_ad, 3)
  • 16-06-2019, 17:10:00
    #5
    Dosya upload işlemlerinde uzun süredir. verot.net kullanıyorum kullanışlı basit. Bunu bir kısa fonksiyona da çevirdim. İsteyen inceleyebilir.
    Verot.net resmi sitesi​​​
    Benim oluşturduğum verotnet kısa fonksiyonu​​​