2011-01-09 17 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') 
相关问题