mysqli查询中的变量

时间:2017-03-26 09:14:04

标签: php variables mysqli

我无法理解在涉及变量时形成mysqli查询的方式。我已经尝试了几天不同的方式来修改它但是始终得到同样的错误SQLSTATE [42000]:语法错误或访问冲突:1064。当firt变量为时,anybode可以帮我告诉这行代码有什么问题一个字符串,作为第二个...?

`$tablename = 'sofka';
$sql = "INSERT INTO " . $tablename . " (" . $columns[1] . ")
VALUES (" . $columnsval[1] . ")";`

1 个答案:

答案 0 :(得分:0)

通常用于制定/连接查询或字符串,最好使用sprintf。

$tablename = 'sofka';

$sql = sprintf("INSERT INTO `%s` (`%s`) VALUES ('%s');", $tablename, $columns[1],     
$columnsval[1]);

echo $sql;

除此之外,我将创建一个包含字典数组的包装函数,并循环遍历这些键和val,并制定SQL。

function generateSqlInsert($tablename, $parameters){ 
   $columns = $values = [];

   foreach($parameters as $key => $val){
      $columns[] = "`" . $key . "`";
      $values[] = "'" . $val . "'";
   }

   $columnsSql = "(". implode(",", $columns) . ")";
   $valuesSql = "(". implode(",", mysqli_real_escape_string($values)) . ")";

   $sql = sprintf("INSERT INTO %s %s %s", $tablename, $columnsSql, $valuesSql);

   return $sql;
}

然后您将使用此功能:

  $parameters = ['title' => 'fight club', 'year' => 1995];
  $sql = generateSqlInsert('movies', $parameters);