0

データベースに挿入する別のサイトデータをフォーマットしようとしています。彼は自分のサイトを閉鎖したいので、私に彼のサイトのリストを提供しています。しかし、私のmysqlデータベースに入るには、彼のフラットファイルデータベースから彼のデータをフォーマットする必要があります。

私は彼のテキストファイルをループして、彼の値を取得しています。次に、必要に応じてフォーマットしてから、DBに挿入します。

私たちのサイトは完全に異なるストレージフォーマットとフィールドを使用しているため、何か問題があります。

私のサイトにはデザイナーの分野があります。彼はしません。だから私は彼の説明フィールドを検索して私のデザイナーテーブル内で一致するものを見つけようとしています。一致するものがある場合は、デザイナーIDを取得してデザイナーIDフィールドに挿入します。しかし、私はこのコードを機能させることができません。

誰かが修正を提案してもらえますか?またはこれを行うためのより良い方法がありますか?

$fp = fopen('listings.txt','r');
if (!$fp) {echo 'ERROR: Unable to open file.'; exit;}

$loop = 0;

while (!feof($fp)) {
$loop++;
$line = fgets($fp,1024); //use 2048 if very long lines
$field[$loop] = explode ('  ', $line);


$get_designers = mysql_query("SELECT * FROM dress_designers");
$row_designers = mysql_fetch_array($get_designers);
$totalRows_designers = mysql_num_rows($get_designers);

do{
// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.

$mystring = strtolower($field[$loop][8]);
$findme   = strtolower($row_designers['designer_name']);
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
$designer = "Other";
} else {
$designer = "Siopa Rince";
}

} while ($row_designers = mysql_fetch_assoc($get_designers));

$fp++;
}

fclose($fp);

私は「SiopaRince」だけをテストしました。しかし、これは機能していません。ファイルからテキストを取得し、それを$ mystringに貼り付けて、sioparinceを$findmeに入れると...動作します。

任意の提案をいただければ幸いです!

ありがとう、ダニー

OK ...情報をそのまま入力するのはどうですか?いくつかの異なる方法を試しましたが、結果はnullを返します...

データを挿入した後、検索を使用して必要な行を結合し、IDを取得します。

SELECT dress_test.dress_title, (

SELECT dress_designers.designer_id
FROM dress_designers
WHERE MATCH (
dress_test.dress_desc
)
AGAINST (
'dress_designers.designer_name'
IN boolean MODE
)
) AS real_designer_id
FROM dress_test

別のバージョン:

SELECT dress_test.dress_title, dress_designers.designer_name 
FROM dress_test
JOIN dress_designers ON MATCH(dress_test.dress_title, dress_test.dress_desc) AGAINST
('dress_designers.designer_name' in boolean mode)

他に何か提案はありますか?

4

1 に答える 1

0

最初の割り当ては を$row_designers使用mysql_fetch_arrayし、2 番目の割り当ては を使用しますmysql_fetch_assoc

do { ... } while の代わりに、while () { ... } だけではないのはなぜですか

この行を削除$row_designers = mysql_fetch_array($get_designers);

そして、あなたのループを...

while ($row_designers = mysql_fetch_assoc($get_designers)) {
  // string search here
}

他はすべて問題ないようです。問題がある場合は、echo文字列を出力するかprint_r、配列を出力して値を確認してください。

于 2012-07-07T21:07:20.753 に答える