我需要一些帮助才能找到错误

时间:2017-04-07 19:07:57

标签: php mysql mysqli

我创建了一个带有一些有用的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);
},

2 个答案:

答案 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]."'";
相关问题