2011-07-24 22 views
1

好吧,我做這一個,但我有83000字的mysql數據庫,當我執行這個腳本,它會花費太多的時間和一些時間,它不運行。我認爲這個腳本匹配mysql數據庫中的每個標題,因此它在$ row ['full_story']中或者不在。所以如果有任何方法可以使這個過程更快,這使得操作無法使用?或者它只是匹配那些使用的標題$ row ['full_story']代碼是低於在php和mysql中的翻譯

$user_name = "root"; 
    $password = ""; 
    $database = "salar"; 
    $server = "127.0.0.1"; 
$db_handle = mysql_connect($server, $user_name, $password); 
$db_found = mysql_select_db($database, $db_handle); 
if ($db_found) { 
$SQL = "SET NAMES 'utf8'"; 
    mysql_query($SQL); 
$SQL = "SELECT * FROM dle_mylinks ORDER BY LENGTH(title) DESC"; 
$result = mysql_query($SQL); 
while ($db_field = mysql_fetch_assoc($result)) { 
$row['full_story'] = str_replace ($db_field['title'],"<a href=\"?newsid=" . $db_field['id'] . "\">" . $db_field['title'] . "</a>" ,$row['full_story']); 
$row['short_story'] = str_replace ($db_field['title'],"<a href=\"?newsid=" . $db_field['id'] . "\">" . $db_field['title'] . "</a>" ,$row['short_story']); 
} 
$mydata =$row['short_story'] . $row['full_story']; 


mysql_close($db_handle); 

} 
else { 
print "Database NOT Found "; 
mysql_close($db_handle); 
} 
+0

沒有人?請幫忙 – user860553

回答

3

你會想循環遍歷表中的每一行循環。

例子:

$query = mysql_query("SELECT * FROM `table`"); 

while($row = mysql_fetch_object($query)){ 
    $mydata = str_replace($row->word,$row->meaning,$mydata); 
} 
+0

我花了我5個小時,但如果你請上面的代碼請你好好糾正一下,iam PHP MYSQL的新手 – user860553

1

小心str_replace函數,如果你要替換每個「thistance」和之後的「距離」,取代了「這個」的「DIS」你「距離」再次(這是一個文字遊戲,問題的近似)

使用preg_replace。

創建兩個陣列(Zend框架fetchCol或你最喜歡的LIB)

$aWords = $zfDb->fetchCol('select words from table'); 

$aMeans = $zfDb->fetchCol('select means from table'); 

而且

$mydata = preg_replace($aWords, $aMeans, $mydata);