我创建了一个文件,该文件带有一些有用的PHP函数以用于SQL数据库,但是我在将记录插入SQL表中的代码有问题.
当我尝试执行此代码时,它显示如下:
Fatal error: Uncaught Error: Unsupported operand types in C:\xampp\htdocs\iterations_php_mysql.php:118 Stack trace: #0 C:\xampp\htdocs\prova.php(9): setRecord(Object(mysqli), ‘studenti’, Array, Array) #1 {main} thrown in C:\xampp\htdocs\iterations_php_mysql.php on line 118
这是函数($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);
}
解决方法:
$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);