【发布时间】:2017-04-07 19:07:56
【问题描述】:
我创建了一个文件,其中包含一些有用的 PHP 函数来操作 SQL 数据库,但是在 SQL 表中插入记录的代码存在问题。 当我尝试执行此代码时,它会出现:
致命错误:未捕获错误:C:\xampp\htdocs\iterations_php_mysql.php:118 中不支持的操作数类型 堆栈跟踪:#0 C:\xampp\htdocs\prova.php(9): setRecord(Object(mysqli) , 'studenti', Array, Array) #1 {main} 在第 118 行的 C:\xampp\htdocs\iterations_php_mysql.php 中抛出
这是函数($link 是主机获取与$link = mysqli_connect($host, $username); 的链接,$table 是表名,$tableFields 是包含字段名称的数组,$recordFields 是包含新记录字段的数组):
function setRecord($link, $table, $tableFields, $recordFields){
$sql = "INSERT INTO ".$table." (";
if(count($tableFields) == count($recordFields)) $n = $tableFields;
else return false;
for($i=0; $i<$n; $i++){
$sql = $sql . $tableFields[$i];
if($i != $n-1){ $sql = $sql . ", ";} //this is the line 118
}
$sql = $sql.") VALUES (";
for($i=0; $i<$n; $i++){
$sql = $sql.$recordFields[$i];
if($i != $n-1) $sql = $sql . ", ";
}
$sql = $sql.")";
return mysqli_query($link, $sql);
}
【问题讨论】:
-
在返回查询之前回显 $sql 并显示它
-
回显 $sql
-
我希望您不会将其与用户提供的数据一起使用。
-
我强烈建议您将准备好的语句构建到这个通用函数中
-
这个函数可以简化。你可以有两个参数。表名和键值数组作为第二个参数。