PHP 由于 id 为空而未插入记录

问题描述 投票:0回答:2

我想使用

将记录插入数据库

我有3个文件

  1. config.php(用于数据库连接)
  2. function.php(用于创建CRUD函数)
  3. emp.php(听我从functions.php调用函数)

1。 config.php文件

<?php
$servername = "localhost";
$username = "root";
$password = "";

// Create connection
$conn = mysqli_connect($servername, $username, $password) ;

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$db =mysqli_select_db($conn,"test");    
?>

2。函数.php

 <?php
  include('config.php');

function addRecord($table,$columns,$val){
     $insertQuery = "INSERT INTO ".$table." ($columns) VALUES('".$val."')";
     return $insertQuery;
}
    ?>

3. emp.php

听到我从

addRecord
文件调用
function.php
函数以将记录添加到数据库中。

 <?php
include('config.php');
include('function.php');

$columns= array('employee_name','employee_salary','employee_age');

$values =array('Jack','12000','15');

$val = "".implode("','", $values)."";   
 $col = "`".implode("`,`", $columns)."`";   

addRecord('employee',$col,$val);

它给了我警告,因为我在

NULL
数组中传递了
$values
,因此在添加记录期间它会显示警告
Missing argument

Note
:id在DB中自动递增

当我打印查询时,它显示

INSERT INTO employee VALUES('Jack','12000','15');

我在

mysql
中使用了相同的查询,给出了
error

#1136 - 列计数与第 1 行的值计数不匹配

请有人帮助我需要更改代码的地方。

php mysqli
2个回答
1
投票

你的功能有点不对劲。

function addRecord($table,$column,$values){
    $insertQuery = "INSERT INTO ".$table." VALUES('".$values."')";      
}

这不会返回任何内容,而且变量

$column
也从未被使用过。

我看不到你实际的 mysql 插入发生在哪里,但是由于该函数除了将字符串分配给变量之外不执行任何操作,因此它不能执行任何操作。

它给了我警告,因为我在 $values 数组中传递了 NULL,所以在添加记录期间它会显示

您将此函数称为

addRecord('employee',$val);
,如您所见,您正在将
$val
传递给
$column
应该在的位置,从函数中删除
$column
,该警告就会消失

还有

$columns= array('id', 'employee_name', 'employee_salary', 'employee_age');
$values = array(NULL, 'Jack', '12000', '15');

应该是

$columns = array('employee_name', 'employee_salary', 'employee_age');
$values = array('Jack', '12000', '15');

然后:

function addRecord($table,$values) {
    return "INSERT INTO ".$table." VALUES('".$values."')";      
}

$addQuery = addRecord('employee',$val);

并在您的陈述中使用

$addQuery

1136 - 列计数与第 1 行的值计数不匹配

这是因为您没有指定要插入哪些列,并且 MySQL 知道有 4 列,包括 ID,并且您为其指定了三个值。

您的查询应该是:

INSERT INTO employee (employee_name, employee_salary, employee_age) 
VALUES ('Jack', '12000', '15');

0
投票

改变:

$columns= array('id','employee_name','employee_salary','employee_age');
$values =array(NULL,'Jack','12000','15');

$columns= array('employee_name','employee_salary','employee_age');
$values =array('Jack','12000','15');
© www.soinside.com 2019 - 2024. All rights reserved.