2012-11-15 238 views
0

我用PDO创建了一个新的函数来在我的数据库中插入数据。PDO插入问题

功能看起来像这样

function insert($table,$column = array(),$value = array()) 
{ 
    $array1 = implode(",", $column); 
    $array2 = implode(",", $value); 

    try 
    { 
     $sql = $this->connect->query("INSERT INTO $table ($array1) VALUES ($array2)"); 


    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 
} 

像这样

-> insert('coupons',array('categorie','name','link','code','id'),array('test11','test','test','test','NULL')); 

但毕竟,它似乎没有工作,没有显示任何错误的调用该函数。有人对我有几点要求,我应该在哪里搜索错误?当我编写query/wo varibales并调用函数时,它可以工作。即使前两个变量有效。只有最后一个($ array2)似乎有一个“bug”。

+3

我建议不要这样的设计。对于初学者来说,它没有利用PDO的主要优点,即绑定参数和防止SQL注入。 –

+0

你是什么意思绑定参数?就像分解查询并重新发布它一样? – Johnny000

+0

['bindParam()'](http://php.net/manual/en/pdostatement.bindparam.php) –

回答

1

你插入的字符串,这意味着你的查询出来

INSERT INTO coupons (categorie, name, ...) VALUES (test11, test, ...) 

裸字符串被解释为字段/表名,这意味着你的查询是完全无效的。

在最低限度,忽略所有的其它问题与此代码,修复将是

$array2 = implode("','", $value); 
        ^-^--- 

INSERT INTO $table ($array) VALUES ('$array2'); 
            ^--  ^-- 
当然

,这是忽略了SQL注入漏洞,关键词的问题,等等等等等等。

+0

谢谢,它正在工作...... NVM! – Johnny000