• 04-08-2015, 16:59:46
    #1
    Merhabalar,

    insert aşamasında

    Warning: PDOStatement::bindParam() expects at most 5 parameters, 7 given in

    hatası alıyorum. sonrasında yine

    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in

    hatası veriyor. Yardımınızı rica ediyorum.

    $nm = $_POST['nm'];
    $gd = $_POST['gd'];
    $pn = $_POST['pn'];
    $mail = $_POST['mail'];
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    
    if($nm != null && $gd != null && $pn != null && $mail != null && $user != null && $pass != null){
    $stmt = $db->prepare("INSERT INTO users VALUES ('',?,?,?,?,?,?)");
    $stmt->bindparam('ssss', $nm, $gd, $pn, $mail, $user, $pass);
    
    if($stmt->execute()){
  • 04-08-2015, 17:08:56
    #2
    Üyeliği durduruldu
    hocam düzgün bir form filtreleme yapın.
    iflerdeki null şartlarını kaldırıp deneyin kod okunmuyor güzlerim ağrıdı

    $stmt = $db->prepare("INSERT INTO users VALUES (?,?,?,?,?,?,?)");
  • 04-08-2015, 17:23:28
    #3
    Hocam Çok teşekkürler fakat hala aynı hata devam ediyor

    Warning: PDOStatement::bindParam() expects at most 5 parameters, 7 given in


    $nm = $_POST['nm'];
    $gd = $_POST['gd'];
    $pn = $_POST['pn'];
    $mail = $_POST['mail'];
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    
    $stmt = $db->prepare("INSERT INTO users VALUES ('',?,?,?,?,?,?)");
    $stmt->bindparam('ssss', $nm, $gd, $pn, $mail, $user, $pass);
    
    if($stmt->execute()){
    ?>
    <div class="alert alert-success alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <strong>Success!</strong> Kayıt Başarılı...
    </div>
    <?php
    } else{
    ?>
    <div class="alert alert-danger alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <strong>Error!</strong> Kayıt Yapılamadı...
    </div>
    <?php
    }
  • 04-08-2015, 19:50:26
    #4
    Üyeliği durduruldu
    istizan adlı üyeden alıntı: mesajı görüntüle
    Hocam Çok teşekkürler fakat hala aynı hata devam ediyor

    Warning: PDOStatement::bindParam() expects at most 5 parameters, 7 given in


    $nm = $_POST['nm'];
    $gd = $_POST['gd'];
    $pn = $_POST['pn'];
    $mail = $_POST['mail'];
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    
    $stmt = $db->prepare("INSERT INTO users VALUES ('',?,?,?,?,?,?)");
    $stmt->bindparam('ssss', $nm, $gd, $pn, $mail, $user, $pass);
    
    if($stmt->execute()){
    ?>
    <div class="alert alert-success alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <strong>Success!</strong> Kayıt Başarılı...
    </div>
    <?php
    } else{
    ?>
    <div class="alert alert-danger alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <strong>Error!</strong> Kayıt Yapılamadı...
    </div>
    <?php
    }
    $stmt = $db->prepare("INSERT INTO users VALUES (?,?,?,?,?,?,?)");
  • 04-08-2015, 20:48:00
    #5
    $stmt = $db->prepare("INSERT INTO users VALUES ('',?,?,?,?,?,?)");
    Öncelikle INSERT komutunu ben sizin yerinizde olsam aşağıdaki gibi yapardım. Sizin yaptığınız da yanlış değil fakat hangi sütun hangi değişkene geliyor eşleştirmek , daha az hata yapmanızı sağlar.

    $stmt = $db->prepare("INSERT INTO users (sutun1, sutun2, sutun3) VALUES (?,?,?)");
    gibi.

    İkincisi ise hata aldığınız yer. Sorgunuzda kaç adet soru işareti kullandıysanız, bindparam komutunun 1. parametresinde o kadar s koymalısınız. Siz 4 adet s koymuşsunuz fakat 6 adet değişken var. Bu string olduğu için s olarak yazılıyor. Farklı değerler alabilir.

    Yanlış:
    $stmt->bindparam('ssss', $nm, $gd, $pn, $mail, $user, $pass);
    Doğru:
    $stmt->bindparam('ssssss', $nm, $gd, $pn, $mail, $user, $pass);
    Kısacası değişken kadar soru işareti, soru işareti kadar "s" kullanmalısınız.
    Kolay gelsin.
    • istizan
    istizan bunu beğendi.
    1 kişi bunu beğendi.
  • 05-08-2015, 09:08:30
    #6
    Arkadaşlar çok teşekkür ederim, sorun çözüldü.