2012-11-15 234 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