0

我正在尝试格式化另一个站点数据以插入到我的数据库中。他想关闭他的网站,所以给我他的网站列表。但是我必须从他的平面文件数据库中格式化他的数据,才能进入我的 mysql 数据库。

我遍历他的文本文件,并获取他的值。然后在将它们插入我的数据库之前根据需要进行格式化。

因为我们的站点使用完全不同的存储格式和字段,所以我遇到了一些问题。

我的网站有一个设计师领域。他没有。所以我试图搜索他的描述字段以在我的设计师表中找到匹配项。如果有匹配项,我希望将设计师 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);

我只把“Siopa Rince”作为测试。但这不起作用。如果我从文件中获取文本,并将其粘贴到 $mystring 中并将 siopa rince 放入 $findme... 它可以工作。

任何建议将不胜感激!

谢谢,丹尼

好的...直接输入信息怎么样?我尝试了几种不同的方法,但结果返回 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,而您的第二次使用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 回答