PHP 数组到 PDO 变量


php array to pdo variables

这是我想要实现的目标:我正在为学校学习 OOP,我有 tp 做注册的事情......它正在工作,但很多是硬编码的,我想做一个通用的插入函数其工作原理类似于$class->插入"1,2,3","foo,bar,thing"它将 foo 插入 1 根柱线到 2 根柱线,将东西插入 3 根柱线问题来了:我不知道如何将我的PHP数组转换为SQL变量因为我不知道我的 PHP 数组中有多少个项目。(由于爆炸)

这是我到目前为止的代码:

<?php
 class database
{
static protected $_connection;
public function __construct($host, $dbname, $username, $password)
{
    self::$_connection = new PDO("mysql:host=" . $host . ";dbname=" . $dbname, $username, $password);
    self::$_connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return self::$_connection;
}
public function insert($tablename, $columns, $values)
{
    $exploded = explode(", ", $values);
    $valuenumber = NULL;
    $string = NULL;
    $teller = 0;

    $query = self::$_connection->prepare('INSERT INTO gebruikers (:naam) VALUES ');
    foreach ($exploded as $array) {
        $query->bindparam(":value" . $valuenumber, $array);
        $valuenumber++;
    }
    for ($i = $valuenumber; $i > 0; $i--) {
        $string .= ", :value" . $teller;
        $teller++;
        // alles wordt in een string gezet: ":value, :value1, :value2
    }
    $stringarray = explode($string, ", ");
    $query->execute(array(
        'naam' => $teller
    ));
}
}

$client = new database("localhost", "oop", "root", "");
$client->insert("gebruikers", "naam", "test");

如果它有点混乱并且缺乏评论,我很抱歉我在这方面很新。

谁能帮我一点?谢谢

G3.

public function insert($table, $columns, $values)
{
    // make sure we have the same amount of keys and values
    if(count($columns) !== count($values)){
        return false;
    }
    $query = self::$_connection->prepare('INSERT INTO ' . $table . ' (' . implode(',', $columns) . ') VALUES (:' . implode(',:', $columns) . ')');
    $index = 0;
    foreach($columns as $column){
        $query->bindparam(":" . $column . $values[$index++]);
    }
}

如果我是你,我会摆脱分别传递$columns$values,只传递一个键 => 对数组,如下所示:

array('id' => 1, 'name' => 'new name');

我知道这是一个学习过程,因为你在这里重新发明了轮子。查看像教义这样的图书馆。