2017-04-16 51 views
-3

這是我的代碼,它不喜歡我致電的最後一行一個來自頭文件的方法。即使我調用的方法採用相同數量的參數,它聲明瞭無效的參數編號。我不明白這個參數沒有被定義,因爲$ params是在調用之前定義的,並且$ query是從另一個文件傳入的值。我試過使用點運算符而不是加號來定義$ params,但這並沒有幫助。這裏是我打電話給uploadImage法$查詢值:無法解決此問題:致命錯誤:帶有消息'SQLSTATE [HY093]的未捕獲異常'PDOException':無效參數編號:參數未定義'

Image::uploadImage('postimg', 
    "UPDATE dry_posts SET postimg=:postimg WHERE id=:postid", array(':postid'=>$postid)); 

這個文件應該在另一個文件從一種形式上傳圖片到imgur。

<?php 
include_once("connect.php"); 

    class Image 
    { 
     public static function uploadImage($formname,$query,$params) 
     { 

      $formname = ""; 
      $response = ""; 
      $image = ""; 

      if(file_exists($formname)) 
      { 
       $image = base64_encode(file_get_contents($_FILES[$formname]['tmp_name'])); 
      } 
      $options = array('http'=>array(
       'method'=>"POST", 
       'header'=>"Authorization: Bearer 8cd9d1bb71401737dc720f9381d8e9763f580af6\n". 
       "Content-Type: application/x-www-form-urlencoded", 
       'content'=>$image 
      )); 

      $context = stream_context_create($options); 
      $imgurURL = "https://api.imgur.com/3/image"; 
      if ($_FILES[$formname]['size'] > 10240000) { 
       die('Image too big, must be 10MB or less!'); 
      } 
      if(file_exists($formname)) 
      { 
       $response = file_get_contents($imgurURL, false, $context); 

      } 
      $response = json_decode($response); 

      //$prearams = array($formname=>$response->data->link); 
      //$params = $preparams + $params; 
      $params=array(':post‌​id'=>$postid)+array(':postimg'=>$postimg‌​); 
      connect::query($query,$params); 


     } 


    } 

?> 

回答

0

你的問題就來了形式:

Image::uploadImage('postimg', 
    "UPDATE dry_posts SET postimg=:postimg WHERE id=:postid", array(':postid'=>$postid)); 

你問:postimg:postid,但只提供$postid

讓我們通過添加:postimg值解決這個問題:

Image::uploadImage('postimg', 
    "UPDATE dry_posts SET postimg = :postimg WHERE id = :postid", array(':postid' => $postid, ':postimg' => $postimg)); 

當然,你必須填充$postimg值...

而且也解決這一行:

$params=array(':post‌​id'=>$postid)+array(':postimg'=>$posti‌​mg‌​); 
來自Image :: uploadImage()函數的

。應該是:

$params = array(':postid' => $params['postid'], ':postimg' => $params['postimg']); 

希望它有幫助。

+0

好的,我試着像這樣填充它$ postimg = connect :: query('SELECT postimg FROM dry_posts');我得到了同樣的錯誤,甚至填充$ postimg我仍然得到了那個錯誤 – Bubba

+0

你是否爲'$ postimg'值是什麼?嘗試'var_dump()'並檢查它是否是你要查找的字符串。 – JazZ

+0

$ postimg是另一個文件中的表單的變量 – Bubba

相關問題