我无法理解在涉及变量时形成mysqli查询的方式。我已经尝试了几天不同的方式来修改它但是始终得到同样的错误SQLSTATE [42000]:语法错误或访问冲突:1064。当firt变量为时,anybode可以帮我告诉这行代码有什么问题一个字符串,作为第二个...?
`$tablename = 'sofka';
$sql = "INSERT INTO " . $tablename . " (" . $columns[1] . ")
VALUES (" . $columnsval[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);