我创建了一个带有一些有用的PHP函数的文件来操作SQL数据库,但我在SQL表中插入记录的代码有问题。 当我尝试执行此代码时,它显示为:
致命错误:未捕获错误:C:\ xampp \ htdocs \ iterations_php_mysql.php中不支持的操作数类型:118堆栈跟踪:#0 C:\ xampp \ htdocs \ prova.php(9):setRecord(Object(mysqli) ,'studenti',Array,Array)在第118行的C:\ xampp \ htdocs \ iterations_php_mysql.php中抛出#1 {main}
这是函数($link = mysqli_connect($host, $username);
是主机get $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);
}
是一个包含新记录字段的数组:
beforeSend: function(xhr){
xhr.setRequestHeader(`${headerName}`, headerValue);
},
答案 0 :(得分:2)
$n = $tableFields
所以我猜$ tableFields是一个数组?
如果是这样,那么使用数组执行以下操作是没有意义的:
if ($i != $n-1) ...
因为你不能对这样的数组进行算术运算。它会更好地工作:
if ($i != count($n)-2) ...
注意你必须减去2,因为数组从索引0开始。
但我有一个更好的建议来简化你的代码:
而不是所有这些:
for($i=0; $i<$n; $i++){
$sql = $sql . $tableFields[$i];
if($i != $n-1){ $sql = $sql . ", ";} //this is the line 118
}
写下这个:
$sql .= implode(", ", $tableFields);
答案 1 :(得分:1)
您插入的值必须在引号中更改行
$sql = $sql.$recordFields[$i];
到
$sql = $sql."'".$recordFields[$i]."'";