php - 具有动态列名的 PDO 查询

标签 php mysql mysqli pdo

<分区>

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

谁能告诉我如何创建这个。

到目前为止我做的是

$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 查询变得容易并正确插入所有列和值。

我也在寻找执行更新查询的相同方法。

正如您在此处看到的,表格、列和值是完全动态的,它们将传递给函数。

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

$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 注入(inject)

关于php - 具有动态列名的 PDO 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36581257/

相关文章:

MySQL 5.7 : Why are 38% of queries missing from the slow query log?

php - 向表插入数据出错

mysql - 如何使用 Doctrine 2 的带连接的 NativeQuery 编写 SQL 查询?

php - 在其他表的帮助下选择 mySQL 数据

javascript - 使用作为参数传入的JS字符串变量作为chart.js中数据参数的值?

php - 需要在文本文件匹配字符串中获取行号

php - 在每个中选择第一个(SQL/PHP)

css - 如何将数据从一张表转移到另一张表?

php - 比较mysql中的时间字符串与当前时间

php - 使用 json 传递输入字段类型和值