2017-02-02 9 views
1

RSSフィードからデータを抽出してデータベースに挿入するPHPファイルがあります。通常、引用符を置き換えるためにカスタム関数を使用して各フィールドをラップしますが、(要件が変更されたため)必要はなくなりました。しかし、私はこのようなカスタム関数の各フィールドを包む場合:私は、ロジックを使用したとき、私は、エラー「無効なバインドするために使用される変数のエラーoci_bind_by_name()」:取得の下に何らかの理由でPHPエラーoci_bind_by_name():バインドに無効な変数があります

$guid = customfunction($item->guid); 

を、それは動作しますが、なぜですか?

は、デフォルトでは、あなた

foreach($rss->channel->item as $item) { 




    print '<a href="'.$item->link.'">'.$item->title.'</a><br />'; 

    $guid = $item->guid; 
    $title = $item->title; 
    $link = $item->link; 
    $pubDate = $item->pubDate; 
    $description = $item->description; 
    $content = $item->content; 

    $stid = oci_parse($spConn,"INSERT INTO table123 
       (sku, title, link, pubDate, field1, field2) 
       VALUES(:guid_bv, :title_bv, :link_bv, :pubDate_bv, :description_bv, :content_bv)"); 


       oci_bind_by_name($stid, ":guid_bv", $guid); 
       oci_bind_by_name($stid, ":title_bv", $title); 
       oci_bind_by_name($stid, ":link_bv", $link); 
       oci_bind_by_name($stid, ":pubDate_bv", $pubDate); 
       oci_bind_by_name($stid, ":description_bv", $description); 
       oci_bind_by_name($stid, ":content_bv", $content); 

       oci_execute($stid); 
+0

のいずれかの値はnullですか? – Dimi

+0

Read http://www.php.net/manual/en/function.oci-bind-by-name.php例3 –

+0

@Dimiそれらのどれも確かにnullです。 – AAA

答えて

0

ありがとう、oci_bind_by_name()は、唯一の3つのパラメータ、及び扱いあなたが文字としてバインドするすべての変数が必要です。しかし、ほとんどのケースでうまく動作しますが、浮動小数点、バイナリデータまたは整数を追加しようとすると、あなたが叫ぶかもしれないし、無効な変数が使用されていると不平を言うかもしれません。この問題を解決するにはいずれかのあなたは、パラメータの別のセットをoci_bind_by_name与えるいずれかの必要がある、例:

if(is_numeric($v2)){ 
    oci_bind_by_name($stmth, $bvar, $v2, 8, OCI_B_INT); 
    }else{ 
    $v2 = (string) $v2; 
    oci_bind_by_name($stmth, $bvar, $v2, -1, SQLT_CHR); 
    } 

または単に私が強く作成助言しながら使用して/この

oci_bind_by_name($stid, ":description_bv", strval($description)); 
oci_bind_by_name($stid, ":content_bv", strval($content)); 

のような)(strvalであなたの変数をラップ変数にstrval()を使用すると、整数、倍精度または他の形式を渡すときに、すべての「無効な変数がバインドに使用されました」エラーを排除する必要があります。

関連する問題