私が取り組んでいるプロジェクトの次の段階に進む方法について質問があります。
フェーズI:
すべての.txtファイルのディレクトリをスクレイピングするphpスクリプトを作成します。各行を開いて解析し、配列に分解します...配列をループして、必要なデータを選択し、すべてをデータベースに挿入します(120以上の.txtファイルと10万レコードが挿入されました)。
これは私の次のステップに私を導きます、
フェーズII:
数万の数の「リスト」を取得する必要があります。データベースをクエリするための検索語としてそのデータ(番号)を使用して、それぞれをループします。一致するものが見つかった場合は、同じレコード/行の別の列にあるデータ。
私がとる予定の一般的な考え/ステップ
- ディレクトリをスクレイプして「ソース」テキストファイルを見つけます。
- 'ソースファイル'を開く/解析する....行ごとに..。
- 区切り文字で各行を展開し、「ターゲット検索番号」を取得します
- 各番号を「マスターリスト」配列にダンプします。
- 「マスターリスト」配列をループします。検索(SELECT)ステートメントで各番号を使用します。
- 一致するものが見つかった場合は、一致する/返された行(レコード)の別の列にあるデータを取得します。
- このデータを..screenまたは.txtファイルのいずれかに出力します(そのステップはまだ決定されていません。..新しい行に返された各番号を介したテキストファイルである可能性があります)
詳細:
このような「複数の」検索/選択ステートメントを実行する方法がわかりませんか?
それぞれが一意の検索語を持つ複数のSELECTステートメントを実行するにはどうすればよいですか?また、返された列データを収集しますか?
DBは、このようなループで一致する値/データを返すのに十分な速度ですか?ループを再度繰り返す前に、返されるデータをなんらかの方法で待機/一時停止/遅延する必要がありますか?
ありがとう!
私が使用/試行している現在の関数:
これは私が現在いるところです:
$harNumArray2 = implode(',', $harNumArray);
//$harNumArray2 = '"' . implode('","', $harNumArray) . '"';
$query = "SELECT guar_nu FROM placements WHERE har_id IN ($harNumArray2)";
echo $query;
$match = mysql_query($query);
//$match = mysql_query('"' . $query . '"');
$results = $match;
echo("<BR><BR>");
print_r($results);
私はそれぞれこれらの出力を取得します:
配列([0] => sample_source.txt)
HAR IDを取得するファイルの総数:1
すべてのファイルで合計HARSが見つかりました:5 SELECT guar_nu FROMplacements WHERE har_id IN( "108383442"、 "106620416"、 "109570835"、 "109700427"、 "100022236")
&
配列([0] => sample_source.txt)
HAR IDを取得するファイルの総数:1
すべてのファイルで合計HARSが見つかりました:5 har_idINのプレースメントからguar_nuを選択してください(108383442,106620416,109570835,109700427,100022236)
これをどこに貼り付けて実際に実行するのですか?
ありがとう!
アップデート:
このコードは「OK」で機能しているようですが、リタイアされたデータを正しく処理する方法がわかりません。リスト全体ではなく、最後の変数/行データのみを出力(印刷)しているようです。
$harNumArray2 = implode(',', $harNumArray);
//$harNumArray2 = '"' . implode('","', $harNumArray) . '"';
//$query = "'SELECT guar_num FROM placements WHERE har_id IN ($harNumArray2)'";
$result = mysql_query("SELECT har_id, guar_num FROM placements WHERE har_id IN (" . $harNumArray2 . ")")
//$result = mysql_query("SELECT har_id, guar_num FROM placements WHERE har_id IN (0108383442,0106620416)")
or die(mysql_error());
// store the record of the "example" table into $row
$row = mysql_fetch_array($result);
$numRows = mysql_num_rows($result);
/*
while($row = @mysql_fetch_assoc($result) ){
// do something
echo("something <BR>");
}
*/
// Print out the contents of the entry
echo("TOTAL ROWS RETURNED : " . $numRows . "<BR>");
echo "HAR ID: ".$row['har_id'];
echo " GUAR ID: ".$row['guar_num'];
この返されたデータを適切に処理するにはどうすればよいですか?
ありがとう!