0

データベースにデータを挿入するために、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'));

しかし、結局のところ、それは機能していないようで、エラーは表示されていません。誰かが私のためにいくつかのポイントを持っていますか、どこで私は間違いを検索する必要がありますか?変数にクエリを記述して関数を呼び出すと、機能します。最初の2つの変数でも機能します。最後のもの($ array2)だけに「バグ」があるようです。

4

1 に答える 1

1

文字列を挿入しているため、クエリが出てきます

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

裸の文字列はフィールド/テーブル名として解釈されます。つまり、クエリは完全に無効です。

最低限、このコードの他のすべての問題を無視すると、修正は次のようになります。

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

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

もちろん、これはSQLインジェクションの脆弱性、キーワードの問題、何とか何とかを無視しています。

于 2012-11-15T18:51:25.547 に答える