具有动态列名的PDO查询


PDO query with dynamic column names

我正在将一个应用程序从MySql升级到PDo,现在这个应用程序很大,所以我不想每次都写查询,而是创建一些插入、更新、选择等函数,这些函数接受dyanamic表名,列及其值在数组中。

有人能告诉我如何创造这个吗。

到目前为止我做的是

$connection = new PDO("mysql:host=$host;dbname=$database;charset=utf8", "$user", "$password");

用于选择

$field = array("column1","column2");
$sql = "SELECT ".$fields." FROM ".$table." ".$whereSQL." ";

用于插入

$col_val = array("column1"=>value, "column2"=>2);
$query = "insert into ".$table." (".$fields.") values (".$values.")";
$query = $connection->prepare($sql);
$query->execute();

我试着做所有这些,但对于插入查询中的一个例子,我想将数组作为传递

$col_val = array("column1"=>value, "column2"=>2);

这里的一些代码和函数使PDO查询变得简单,并正确插入所有列和值。

我也在寻找同样的方式来执行更新查询。

正如您在这里看到的tabel,列和值是完全动态的,将传递给函数。

目前,我正在使用的所有奇数查询

$query = $connection->prepare($sql);
$query->execute();

提前谢谢。

这不是一个完整的解决方案,但我认为这是你可以用来更接近解决问题的想法。

$columns = array('column1', 'column2', 'column3')
$comma_separated = implode(",", $columns);
$columns_values = array(
    'column1' => 'text1',
    'column2' => 'text2',
    'column3' => 'text3',
    )
$values_query = "";
$index = 0
foreach ($columns as $column_name) {
    if ($index == 0){
        $values_query .= "'". $columns_values[$column_name]."'"
    }else{
        $values_query .= ", '". $columns_values[$column_name]
    }
}

$query = "INSERT INTO table (". $comma_separated . ") VALUES (".$values_query.");";

在执行查询之前,您可以使用PDO来转义字符串($query),以避免SQL注入