2011-01-09 43 views
0

如果問題不對,我表示歉意。我仍然是一個新手和學習者,但是如果有人糾正我,如果我在某個地方錯了,我將不勝感激。如何使用數組中的多個分隔符來分配和連接?

這裏在類方法我使用的數據插入數據庫

public function insert($table,$col,$value) 
{ 
    if(is_array($col) && is_array($value)) 
    { 
     $query = "INSERT INTO ".$table."(" . implode(",",$col) . ") VALUES(" . implode(",",$value) . ")"; 
    } 
    else 
    { 
     $query = "INSERT INTO " . $table . "(" . $col . ") VALUES(". $value . ")"; 
    } 
} 

現在我在這裏確定是否$ NcoI和$值是一個數組如果是則處理它。需要

但是我在這裏有一個問題,因爲在INSERT語句中值在單或雙引號格式來represnted它不會處理查詢,因此打印錯誤

例如下面的代碼將打印錯誤

$query = "INSERT INTO users(username,email) VALUES(test,[email protected])"; 

和正確的格式將

$query = "INSERT INTO users(username,email) VALUES('test','[email protected]')"; 

現在在山坳價值我想單引號添加到前夕數組中的ry值,例如像這樣的$ value數組。

$ value = array('test','[email protected]');

應該給回值

'測試', '[email protected]'

,而不是

測試,測試@ test.com

我如何實現呢?

+0

它會給後面的第二個例子,因爲單引號是PHP的解析,而不是字符串的一部分。 – BoltClock 2011-01-09 11:25:23

+1

另外,像這樣連接會非常難看,請改用`sprintf()`。你還需要確保你逃脫你的表,列和值。 – BoltClock 2011-01-09 11:26:27

回答

2
$query = "INSERT INTO $table ('" . implode("','",$col) . "') 
      VALUES ('" . implode("','",$value) . "')"; 

確保既不$山坳也不$值爲空。

0

您可以使用array_map()方法:

function addQuotes($str) 
{ 
    return "'".$str."'"; 
} 

$value = array_map("addQuotes", $value); 

或遵循奧斯瓦爾德的答案建議。

1

權代碼:

public function insert($table,$col,$value) 
{ 
    if(is_array($col) && is_array($value)) 
    { 
     $query = "INSERT INTO ".$table."(" . implode(",",$col) . ") VALUES('" . implode("','",$value) . "')"; 
    } 
    else 
    { 
     $query = "INSERT INTO " . $table . "(" . $col . ") VALUES('". $value . "')"; 
    } 
} 

CHANGE:

VALUES(" . implode(",",$value) . ") 

TO

VALUES('" . implode("','",$value) . "') 

(你的輸出:)

VALUES(demo,demo2) 

(新建輸出:)

VALUES('demo','demo2') 
相關問題