2012-07-07 115 views
0

我想格式化另一个网站数据插入到我的数据库。他想关闭他的网站,所以给我他的网站列表。但即时通讯必须从他的flatfile数据库格式化他的数据,进入我的mysql数据库。搜索字符串while循环

Im循环访问他的文本文件,并获取他的值。然后根据需要进行格式化,然后将其插入我的数据库。

因为我们的网站使用完全不同的存储格式和领域,即时通讯有一些问题。

我的网站有一个设计师领域。他没有。所以即时通讯试图通过他的描述字段搜索我的设计师表中找到一个匹配。如果有匹配,我想让设计器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中......它就可以工作。

任何建议将不胜感激!

感谢, 丹尼

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) 

其他建议?

+0

欢迎来到Stack Overflow!请不要将'mysql_ *'函数用于新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是很好的PDO教程](http://goo.gl/vFWnC)。 – 2012-07-07 20:00:27

回答

0

你的第一项任务,以$row_designers使用mysql_fetch_array,而你的第二个使用mysql_fetch_assoc

而是做{...}同时,为什么不同时(){...}的

删除此行$row_designers = mysql_fetch_array($get_designers);

,把你的循环变成...

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

其他的一切看起来科幻ne - 如果遇到麻烦,请使用echo打印字符串或print_r来检查打印数组的值。