2016-09-15 12 views
0

varchar値 'BUY0'をデータ型intに変換するときに変換に失敗しました。私のコードの問題点はわかりません。 cd_tp_1_item_noの列タイプはVARCHAR(30)です私の問題は何ですか? varcharをデータ型intに変換するときに変換に失敗しました

$customers = array("4470","3650","4322"); 

foreach($customers as $customer){ 

$sql = "SELECT DISTINCT cd_tp_1_item_no FROM oeprcfil_sql where cd_tp_1_cust_no = $customer"; 
$result = odbc_exec($conn,$sql); 
$item[] = ""; 
     while ($row = odbc_fetch_array($result)) { 

      $item = $row['cd_tp_1_item_no']; 

    } 


} 
+2

起こっ暗黙の変換があるので、あなたは整数値を使用しているため、エラーがありますその列には整数ではない値が少なくとも1つあります。とにかくSQLインジェクションを防止し、現在の問題を修正するのに役立つこのクエリをパラメータ化する必要があります。 –

+0

ああ、カッコを追加すると引用符( '$ customer')が問題を解決しました。また、$ item [](これは別の問題が発生しました)から角括弧を削除します。 newbを助けてくれてありがとう! – Ryan

+0

問題を修正しましたが、SQLインジェクションの脆弱性を修正しませんでした。ボビー・テーブルが来る前にこれを修正してください。 http://bobby-tables.com/ –

答えて

0

あなたの問題を解決するために、次の提案を使用することができます。

$sql = "SELECT DISTINCT cd_tp_1_item_no FROM oeprcfil_sql where cd_tp_1_cust_no = '".(int)$customer."'"; 
関連する問題