2013-11-04 23 views
0

您好我有一個表充滿了公司名稱,我遇到的問題是它充滿了重複。麻煩從一個表中插入一個公司名稱插入到另一個

要解決此問題,我使用下面的一段代碼從一個表中刪除數據,然後使用DISTINCT將其插入到另一個表中。

當我運行的代碼,我不斷收到以下錯誤,

你有一個錯誤的SQL語法;請檢查與您的MySQL服務器版本對應的手冊,以便在第4行使用正確的語法)')'在第4行

如果我刪除公司名稱變量,它將插入所有的IP地址,儘快嘗試插入公司名稱,我收到了上述錯誤。

$query = "SELECT DISTINCT ip_address, company_name, FROM companydetail1";  
    $result = mysql_query($query) or die(mysql_error()); 
    while($row = mysql_fetch_array($result)){ 

    $ip_address = $row['ip_address']; 
    $company_name = $row['company_name'] ; 
    mysql_real_escape_string($company_name); 
    mysql_real_escape_string($ip_address); 

    mysql_query("INSERT INTO companydetail30 (ip_address, company_name) VALUES ('$ip_address', '$company_name') ") or die(mysql_error()); 
    } 

任何建議,將不勝感激。

感謝

+0

是插入錯誤嗎?如果您使用mysqli/PDO並準備好語句,則不會出現此問題 –

+0

這樣做時,必須在將數據提交回數據庫之前先轉義數據。或者,您可以使用INSERT INTO ... SELECT代替 – Strawberry

+0

如果SELECT查詢提供的數據完全符合您的要求,那麼您不應該首先使用PHP,但可以使用[INSERT SELECT](http:/ /dev.mysql.com/doc/refman/5.5/en/insert-select.html)語法直接... – CBroe

回答

1

不僅你的代碼不能在當前狀態下工作,它也容易受到SQL注入,因爲使用的是mysql_real_escape_string不正確。

mysql_real_escape_string功能還給逃脫字符串作爲其返回值,所以你需要指定它回到變量保存轉義字符串:

$company_name = mysql_real_escape_string($company_name); 
$ip_address = mysql_real_escape_string($ip_address); 
0
與不同有您的查詢

IA錯誤

 $query = "SELECT DISTINCT ip_address, company_name, FROM companydetail1"; 

有一個 「」 COMPANY_NAME後,它不應該是

查詢應該是這樣的

 $query = "SELECT DISTINCT ip_address, company_name FROM companydetail1"; 

其次,你應該做的是這樣的。

 $company_name = mysql_real_escape_string($company_name); 
     $ip_address = mysql_real_escape_string($ip_address);