首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数来创建动态SQL查询。

问函数来创建动态SQL查询。
EN

Stack Overflow用户
提问于 2017-07-24 13:04:37
回答 2查看 2.1K关注 0票数 1

我有很多重复的代码,可以从我的MySQL数据库中插入和选择数据。出于好奇,是否可以创建一个PHP函数,该函数可以将table、columns和rows作为参数并生成SQL语句。一个完全动态的SQL语句生成器(如果需要的话)。

例如:

代码语言:javascript
复制
function PushData($table, $columns, $values)
{
    // insert data
}

而且,这是相反的可能性。可以选择和返回数据的函数。

代码语言:javascript
复制
function PullData($table, $columns, $rowID)
{
    // grab data
    return data;
}

这样的事有可能吗?如果是的话,这是否值得去做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-24 15:12:24

试一试,我不确定它是否会起作用。

代码语言:javascript
复制
function PushData($table, $columns, $values)
{
    $question_mark = count($columns)-1;
    $question_mark_array = array_fill(0, $question_mark, '?');

    $valueEscapedTrimed = array();

    foreach($values as $value)
    {
        $value=trim($value);
        $valueEscapedTrimed[] = htmlentities($value, ENT_QUOTES | ENT_HTML5, $encoding = 'UTF-8' );
    }

    $query = 'INSERT INTO '.$table. '(' .implode(' ',$columns). ') VALUES ('.implode(',',$question_mark_array).') \' ' ;

    foreach($valueEscapedTrimed as $value)
    {
        $stmt = $conn->prepare($query);
        $stmt->bindValue('?', $value);
        $stmt->execute();
        $stmt->CloseCursor();
        $stmt=null;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2017-07-25 11:57:50

为了防止有人像我一样好奇,我做了两个函数的工作示例。特别感谢迈克尔的回答,他让我走上了正确的道路。

插入数据函数

代码语言:javascript
复制
function PushData($conn, $table, $columns, $values)
{
  $column_count = count($columns);
  $overwriteArr = array_fill(0, $column_count, '?');

  for ($i = 0; $i < sizeof($columns); $i++)
  {
    $columns[$i] = trim($columns[$i]);
    $columns[$i] = '`' . $columns[$i] . '`';
  }

  $query = "INSERT INTO {$table} (" . implode(',', $columns) . ") VALUES (" . implode(',', $overwriteArr) . ")";

  foreach ($values as $value)
  {
    $value = trim($value);
    $value = mysqli_real_escape_string($conn, $value);
    $value = htmlentities($value, ENT_QUOTES | ENT_HTML5, $encoding = 'UTF-8');
    $value = '"' . $value . '"';
    $query = preg_replace('/\?/', $value, $query, 1);
  }

  $result = mysqli_query($conn, $query);
  return $result;
}

选择数据函数

代码语言:javascript
复制
function PullData($conn, $table, $columns, $operand_column, $operand_value)
{
  $columns = implode(',', $columns);
  $sql = "SELECT {$columns} FROM {$table} WHERE {$operand_column} = {$operand_value}";
  $result = mysqli_query($conn, $sql);
  return $result;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45281417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档