2016-11-11 19 views
2

は私のプロジェクトに本当に助けが必要です。私はこのエラーが発生します。PDOとPHPのヘルプ... SQLSTATE [HY093]:無効なパラメータ番号:パラメータがバインドされていません

SQLSTATE [HY093]:無効なパラメータ番号:パラメータが全く

を拘束されませんでした私はフォームから新しいオブジェクトを作成しようとに入れてる2時間、まだ見当もつかない...のために働きますデータベース。 私のコードは...

これは私のフォームです。

<form role="form" method="POST" enctype='multipart/form-data' action="Action/CreateAdmin.php"> 
<fieldset> 
<table> 
    <tr> 
     <td><div class="form-group">Username</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
       <input class="form-control" placeholder="Username" name="username" type="text" autofocus> 
      </div> 
     </td> 

    </tr> 
    <tr> 
     <td><div class="form-group">Password</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
       <input class="form-control" placeholder="Password" name="password" type="password" value=""> 
      </div> 
     </td> 

    </tr> 
    <tr> 
     <td><div class="form-group">Nama Depan</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
       <input class="form-control" placeholder="Nama Depan" name="NamaDpn" type="text" value=""> 
      </div> 
     </td> 

    </tr> 
    <tr> 
     <td><div class="form-group">Nama Belakang</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
       <input class="form-control" placeholder="Nama Belakang" name="NamaBlkng" type="text" value=""> 
      </div> 
     </td> 

    </tr> 
    <tr> 
     <td><div class="form-group">No. Telepon</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
       <input class="form-control" placeholder="No. Telepon" name="no_telp" type="text" value=""> 
      </div> 
     </td> 

    </tr> 
    <tr> 
     <td><div class="form-group">Previlage</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
      <?php 
      $dataRole=$RoleObject -> getAllRole() -> getIterator(); 
       echo "<select class='form-control' name='role'>"; 
       while($dataRole -> valid()){ 
        echo "<option value='".$dataRole -> current()->getIdRole()."'>".$dataRole->current()->getRoleName()."</option>"; 
        $dataRole->next(); 
       } 
       echo"</select>"; 
      ?> 

      </div> 
     </td> 
    </tr> 
    <tr> 
     <td><div class="form-group">Kategori</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
      <?php 
      $dataKategori=$kategoriObject -> getAllKategori() -> getIterator(); 
       echo "<select class='form-control' name='kategori'>"; 
       while($dataKategori -> valid()){ 
        echo "<option value='".$dataKategori -> current()->getIdKategori()."'>".$dataKategori->current()->getNamaKategori()."</option>"; 
        $dataKategori->next(); 
       } 
       echo"</select>"; 
      ?> 

      </div> 
     </td> 
    </tr> 

    <tr> 
     <td><div class="form-group">Foto</div></td> 
     <td><div class="form-group">:</div></td> 
     <td> 
      <div class="form-group"> 
       <input class="form-control" placeholder="Foto" name="foto" type="file" value=""> 
      </div> 
     </td> 
    </tr> 
    <br/> 
    <?php 

    if(isset($_GET["pesan"])) 
    { 
     if($_GET["pesan"] == MD5("kosong")) 
     { 
     ?> 
      <p style ="color:red;"> Username atau Password kosong. </p> 
     <?php 

     } 
     else if($_GET["pesan"] == MD5("none")) 
     { 
     ?> 
      <p style ="color:red;"> Username atau Password salah. </p> 
     <?php 

     } 
    } 

    ?> 
    <!-- Change this to a button or input when using this as a form --> 
    <tr> 
     <td colspan="3"> <button class="btn btn-lg btn-success btn-block" name="btnSubmitAdmin">Submit Admin</button> </td> 
    </tr> 

</table> 
</fieldset> 
</form> 

これ一つは、インサート

<?php 
function insertUser (user $user) 
{ 
    $result=FALSE; 

    try{ 
     $iduser= $user -> getIdUser(); 
     $username= $user -> getUsername(); 
     $password= $user -> getPassword(); 
     $namadpn= $user -> getNamaDpn(); 
     $namablkng= $user -> getNamaBlkng(); 
     $notelp= $user -> getNoTelp(); 
     $role=$user->getRoleId(); 
     $kategori= $user -> getKategori(); 
     $foto=$user->getFoto(); 


     $koneksi=Connection::getConnection(); 
     $koneksi->beginTransaction(); 
     $query="INSERT INTO User(id_user, username, password, nama_dpn, nama_blkng, no_telp, id_role, id_kategori,foto) VALUES(?,?,?,?,?,?,?,?,?)"; 

     $stmt=$koneksi->prepare($query); 
     $stmt -> execute(); 

     $stmt -> bindParam(1, $user->id_user()); 
     $stmt -> bindParam(2,$user->username()); 
     $stmt -> bindParam(3, $user->password()); 
     $stmt -> bindParam(4,$user->nama_dpn()); 
     $stmt -> bindParam(5, $user->nama_blkng()); 
     $stmt -> bindParam(6,$user->no_telp()); 
     $stmt -> bindParam(7,$user->id_role()); 
     $stmt -> bindParam(8, $user->id_kategori()); 
     $stmt -> bindParam(9,$user->foto()); 

     $result=$stmt -> execute(); 
     $koneksi -> commit(); 
    }catch(PDOexception $ex){ 
     echo $ex -> getmessage(); 
     die(); 
    } 
    $conn = null; 
    return $user; 
} 
} 
?> 

のための私のユーザオブジェクト関数であり、これは、フォームの私のアクションページです。

<?php 
include "../Utility/koneksi.php"; 
include "../Entity/User.php"; 
include "../Dao/UserObject.php"; 
include "../Entity/Role.php"; 
include "../Dao/RoleObject.php"; 
$UserObject=new UserObject(); 
if(isset($_POST["btnSubmitAdmin"])) 
{ 

    $uname = $_POST['username']; 
    $pwd = $_POST['password']; 
    $nama_dpn = $_POST['NamaDpn']; 
    $nama_blkng = $_POST['NamaBlkng']; 
    $notelp=$_POST['no_telp']; 
    $role=$_POST['role']; 
    $kategori=$_POST['kategori']; 

    $tipeFile=$_FILES['foto']['type']; 
    $lokasiFile=$_FILES['foto']['tmp_name']; 
    $namaFile=$_FILES['foto']['name']; 
    $ukuranFile=$_FILES['foto']['size']; 
    $location=""; 
    if($tipeFile == "image/jpg" or $tipeFile == "image/jpeg" or $tipeFile== "image/png"){ 
     $location = "../img/".$namaFile; 
     move_uploaded_file($lokasiFile,$location); 
    } 
    if($namaFile==""){ 
     $namaFile = "default.jpeg"; 
    } 

    $uname = TRIM($uname); //untuk hapus spasi di depan/ belakang 
    $pwd = TRIM($pwd); 



    $user=new User(); 
    $user->setUsername($uname); 
    $user->setPassword($pwd); 
    $user->setNamaDpn($nama_dpn); 
    $user->setNamaBlkng($nama_blkng); 
    $user->setNoTelp($notelp); 
    $user->setRoleId($role); 
    $user->setKategori($kategori); 
    $user->setFoto($namaFile); 

    if($UserObject->insertUser($user)){ 
     echo "<script>alert('Success')</script>"; 
    } 
} 
?> 

あなたがいずれかのパラメータをバインドしました前の文を実行しようとしている事前

+0

これは、特にあなたが私たちに何も言わないときに、私たちが遂行してくれることを期待する多くのコードです。ここではエラーはすべてです... –

+0

見つけました。 _after_バインディングを '実行する '必要があります。現時点では、 '$ stmt - > execute();'が用意されています。 –

答えて

4

のおかげで:

$stmt = $koneksi->prepare($query); 
$stmt->execute(); 

最初にクエリを準備し、パラメータをバインドし、その後、実行クエリ。

注:また、パラメータをバインドした後、再びを声明を実行します。

$result = $stmt->execute(); 

は、私はあなたがおそらく完全にその最初の実行の試みを削除することができますので、あなたは一度だけの文を実行する必要が疑われます。

+0

ああ、ありがとう...私は完全に台無しだ。 Thankss –

関連する問題