2016-01-03 188 views
0

問候,我在PDO功能上遇到了一些麻煩。SQLSTATE [22018]:鑄造規格的字符值無效

我的代碼:

while (($data = fgetcsv($handle, 1000, ",", "'")) !== FALSE) { 
     if($i > 0) { 
      $data = str_replace('"', '', $data); 
      $myDate = date("Y/m/d",strtotime(str_replace('-','-',$data[0]))); 
      $data = str_replace(' ', '', $data); 
      $lastname = $data[1]; 
      $firstname = $data[2]; 
      $showdata = $db->prepare("SELECT userID FROM users WHERE firstname LIKE '%$firstname%' AND lastname LIKE '%$lastname%'"); 
      $showdata->execute(); 
      $rowas= $showdata->fetch(PDO::FETCH_ASSOC); 
      $userioID = $rowas['userID']; 

      $removals=$db->prepare("DELETE FROM late WHERE userID = '$userioID' AND dateandtime= '$myDate' ;"); 
      $removals->execute(); 


      $import->bindParam(1, $myDate, PDO::PARAM_STR);      
      $import->bindParam(2, $data[4], PDO::PARAM_STR); 
      $import->bindParam(3, $rowas['userID'], PDO::PARAM_STR);     
      $import->execute(); 
     } 
     $i++; 
    } 

沒有清除一部分一切工作就好了。使用刪除 - 我得到錯誤:SQLSTATE [22018]:無效的字符值轉換規範:-3030 [Microsoft] [ODBC Microsoft Access驅動程序]標準表達式中的數據類型不匹配。 (SQLExecute [-3030] at ext \ pdo_odbc \ odbc_stmt.c:254)

任何幫助,將不勝感激。

+0

似乎在刪除userID部分有問題...任何人都可以建議? – JustinasT

+0

你正在處理的字符串值是否包含與純ASCII等效字符不同的Unicode字符? –

+0

userID值是簡單的數字。 – JustinasT

回答

0

您正在比較字符串與整數。這是行不通的。

userID = '$userioID' 

如果「userID」是一個int,則不能將它與字符串'1'進行比較。 像這樣的東西可能工作:

userID = $userioID 

我也考慮使用bindParam方法在所有的SQL查詢。