2017-12-01 23 views
0

ファイルを解析してクエリを作成するだけですが、$rowは私にのいずれかを返します。結果は、保留中の検索結果ごとに結果が得られます。PHP:単純なPDOループが機能していませんか?

while (!feof($f)) { 

    $contents = ''; 
    $contents = fgets($f); 
    $p = explode(" ", $contents); 

    $req = "SELECT id_product from ps_product WHERE `reference`='".$p[1]."'"; 


    $rs = $dbh->prepare($req); 
    $rs->execute(); 

    $row = $rs->fetch(); 

    print_r($row); 
} 

私だけ

私のデバッグは、このようなものです最後に、結果を1つ取得しています:

M0852 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0852 ') 

M0850 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0850 ') 

M0850 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0850 ') 

M0851 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0851 ') 

M0851 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0851 ') 

M0855 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0855 ') 

M0849 

PDOStatement Object ([queryString] => SELECT id_product from ps_product WHERE `reference`='M0849 ') 

アレイ([id_product] => 2662 [0] => 2662)

クエリごとに結果が1つの配列を取得する予定がある場合。

+0

これはそれを行うには間違った方法であるが、それを取り除くします。文字列連結を使用することにより、準備されたステートメントの有用性を完全に迂回します。 – GrumpyCrouton

+0

@GrumpyCrouton私は理解していますが、私はこれを "従来の"バインディングと同じ結果で作ったのです – direxit

+0

@ chris85各フェッチは1行とそのポイントを返しません – direxit

答えて

2

ファイル内の最後の行には末尾にLF文字が付きません。
使用トリム()

$req = "SELECT id_product from ps_product WHERE `reference`=?"; 
$rs = $dbh->prepare($req); 
while (!feof($f)) { 

    $contents = trim(fgets($f)); 
    $p = explode(" ", $contents); 

    $rs->execute([$p[1]]); 
    $row = $rs->fetch(); 

    print_r($row); 
} 
+0

あなたは私の一日を保存しました! – direxit

関連する問題