2013-07-24 79 views
-1

我修改了我的代碼,但找不到錯誤,這看起來很簡單,但從查看代碼中看不到任何東西。誰能幫我?非常感謝你。SQLSTATE [HY093]:無效的參數編號:參數未使用PDO定義

這和更新記錄

// update modelo 
public function alteraModelo($modelo){ 

    try{  
     // monta consulta SQL para atualização do registro 
     $sql = "UPDATE modelos SET 

        nome =   :nome, 
        fone =   :fone, 
        email =   :email, 
        face =   :face, 
        altura =  :altura, 
        peso =   :peso, 
        idade =   :idade, 
        categoria =  :categoria, 
        data_fotos =   :data_fotos"; 

        if($_FILES['foto1']['size'] > 0){ 
         $sql .= "foto1 = :foto1,"; 
        } 
        if($_FILES['foto2']['size'] > 0){ 
         $sql .= "foto2 = :foto2,"; 
        } 
        if($_FILES['foto3']['size'] > 0){ 
         $sql .= "foto3 = :foto3,"; 
        } 
        if($_FILES['foto4']['size'] > 0){ 
         $sql .= "foto4 = :foto4,"; 
        } 
        if($_FILES['foto5']['size'] > 0){ 
         $sql .= "foto5 = :foto5,"; 
        } 
        if($_FILES['foto6']['size'] > 0){ 
         $sql .= "foto6 = :foto6,"; 
        } 
        $sql .="link_video = :link_video 
         WHERE id = :id"; 

     // prepara consulta para o PDO 
     $stmt = $this->prepare($sql); 

     $data = Util::dataToSql($modelo['data_fotos']); 

     // seta os parametros 
     $stmt->bindParam(":data_fotos", $data); 
     $stmt->bindParam(":nome", $modelo['nome']); 
     $stmt->bindParam(":fone", $modelo['fone']); 
     $stmt->bindParam(":email", $modelo['email']); 
     $stmt->bindParam(":face", $modelo['face']); 
     $stmt->bindParam(":altura", $modelo['altura']); 
     $stmt->bindParam(":peso", $modelo['peso']); 
     $stmt->bindParam(":idade", $modelo['idade']); 
     $stmt->bindParam(":link_video", $modelo['link_video']); 
     $stmt->bindParam(":categoria", $modelo['categoria']); 

     if($_FILES['foto1']['size'] > 0){ 
      //Se a foto for atualizada 
      $registro_antigo = $this->getModeloById($modelo['id']); 
      //Remove o arquivo 
      @unlink($registro_antigo['foto1']); 

      $arquivo1 = "upload/" . date('YmdHis') . "_" . $_FILES['foto1']['name']; 
      move_uploaded_file($_FILES['foto1']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo1); 

      $stmt->bindParam(":foto1", $arquivo1); 
     } 

     if($_FILES['foto2']['size'] > 0){ 
      //Se a foto for atualizada 
      $registro_antigo = $this->getModeloById($modelo['id']); 
      //Remove o arquivo 
      @unlink($registro_antigo['foto2']); 

      $arquivo2 = "upload/" . date('YmdHis') . "_" . $_FILES['foto2']['name']; 
      move_uploaded_file($_FILES['foto2']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo2); 

      $stmt->bindParam(":foto2", $arquivo2); 
     } 

     if($_FILES['foto3']['size'] > 0){ 
      //Se a foto for atualizada 
      $registro_antigo = $this->getModeloById($modelo['id']); 
      //Remove o arquivo 
      @unlink($registro_antigo['foto3']); 

      $arquivo3 = "upload/" . date('YmdHis') . "_" . $_FILES['foto3']['name']; 
      move_uploaded_file($_FILES['foto3']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo3); 

      $stmt->bindParam(":foto3", $arquivo3); 
     } 

     if($_FILES['foto4']['size'] > 0){ 
      //Se a foto for atualizada 
      $registro_antigo = $this->getModeloById($modelo['id']); 
      //Remove o arquivo 
      @unlink($registro_antigo['foto4']); 

      $arquivo4 = "upload/" . date('YmdHis') . "_" . $_FILES['foto4']['name']; 
      move_uploaded_file($_FILES['foto4']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo4); 

      $stmt->bindParam(":foto4", $arquivo4); 
     } 

     if($_FILES['foto5']['size'] > 0){ 
      //Se a foto for atualizada 
      $registro_antigo = $this->getModeloById($modelo['id']); 
      //Remove o arquivo 
      @unlink($registro_antigo['foto5']); 

      $arquivo5 = "upload/" . date('YmdHis') . "_" . $_FILES['foto5']['name']; 
      move_uploaded_file($_FILES['foto5']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo5); 

      $stmt->bindParam(":foto5", $arquivo5); 
     } 

     if($_FILES['foto6']['size'] > 0){ 
      //Se a foto for atualizada 
      $registro_antigo = $this->getModeloById($modelo['id']); 
      //Remove o arquivo 
      @unlink($registro_antigo['foto6']); 

      $arquivo6 = "upload/" . date('YmdHis') . "_" . $_FILES['foto6']['name']; 
      move_uploaded_file($_FILES['foto6']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo6); 

      $stmt->bindParam(":foto6", $arquivo6); 
     } 

     $stmt->bindParam(":id", $modelo['id']); 
     // atualiza registro 
     $stmt->execute(); 

    } catch (Exception $e){ 
      echo $e->getMessage(); 

     } 
} 
+1

你需要在'data_fotos =:data_fotos'之後加一個逗號;' - 你在下面幾行中獲得了更多的SQL到'$ sql'的末尾,但它會直接添加到':data_fotos'。 – andrewsi

+0

是的你是對的,這只是一個「逗號」不見了,但我覺得我的眼睛很累,而且他很注重點,或者更確切地說是一個逗號,非常感謝你 – user2199629

+0

有時它只是需要一個額外的眼睛,我很高興有幫助 – andrewsi

回答

0

我不能看到從看代碼的任何代碼。

沒錯。 沒有人正在這樣做。代碼意圖是運行,不被欣賞。

看,你正在編寫一個程序來建立一個SQL查詢。但該計劃的結果如何?你知道嗎?
爲什麼不告訴你的代碼回顯查詢,看看,如果一切正常?

爲什麼不回顯所有綁定變量,並將它們與查詢中的參數進行比較?

此外,您的照片存儲在數據庫中的想法是錯誤的。
表中不應該有枚舉字段。如果你有一個 - 你做錯了什麼。 必須使用另一個表來存儲所有重複的相似數據。

+0

感謝您的評論,但首先我不太瞭解這個問題,但我知道你在做什麼,因爲我的代碼確實是什麼必須是完成了,如果你是如此的專業,可以幫助我,所以只是看代碼,看到我只是錯過了一個逗號,比如上面的朋友......即我的菜鳥錯誤 – user2199629

相關問題