Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于id为空,PHP未插入记录_Php_Mysqli - Fatal编程技术网

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

由于id为空,PHP未插入记录,php,mysqli,Php,Mysqli,我想使用将记录插入数据库 我有3个文件 config.php(用于数据库连接) php(用于CRUD的创建函数) php(听说我从functions.php调用了函数) 1。config.php文件 <?php $servername = "localhost"; $username = "root"; $password = ""; // Create connection $conn = mysqli_connect($servername, $username, $password

我想使用将记录插入数据库

我有3个文件

  • config.php(用于数据库连接)
  • php(用于CRUD的创建函数)
  • 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");    
    ?>
    
    它给了我警告,因为我在
    $values
    数组中传递了
    NULL
    ,所以在添加记录期间,它会显示警告
    缺少参数

    注意
    :id是以DB为单位自动递增的

    当我打印查询时,它会显示出来

    INSERT INTO employee VALUES('Jack','12000','15');
    
    我在
    mysql
    中使用了相同的查询,它是给定的
    error

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

    有人请帮助我在哪里需要更改代码。

    更改:

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


    你的功能有点不正常

    function addRecord($table,$coloumn,$values){
        $insertQuery = "INSERT INTO ".$table." VALUES('".$values."')";      
    }
    
    这不会返回任何内容,而且变量
    $coloumn
    从未使用过

    我看不到实际的mysql插入发生在哪里,但由于该函数除了为变量分配字符串之外什么都不做,所以它什么都做不了

    它给了我警告,因为我在$values数组中传递了NULL,所以在add record期间它的显示

    将此函数调用为
    addRecord('employee',$val)
    ,如您所见,您正在传递
    $val
    ,其中
    $coloumn
    应该是,从函数中删除
    $coloumn
    ,该警告将消失

    应该是

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

    并在语句中使用
    $addQuery

    1136-列计数与第1行的值计数不匹配 这是因为您没有指定要插入的列,MySQL知道有4列,包括ID,您给它三个值

    您的查询应该是:

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

    是否有任何错误输出?此外,您还尝试将值(““$VALUES.”)更改为值($VALUES),因为您已经在implode中添加了“,”,并使用了类似addRecord(“employee”、“,$VALUES”)的函数;不,没有错误,因为我将NULL作为id传递,所以没有插入列计数记录。它不会给您有关
    addRecord()的警告/错误
    需要三个参数,但只得到两个?我删除了第二个参数。如果您想跳过insert查询中的字段,请发布显示insert语句的代码(
    id
    ),您需要让您的
    $columns
    数组定义要输入的字段我删除了$column变量,这是出于调试目的。这就是问题的原因。当我在sql中打印查询时未插入记录,这是给定的缺少列错误。例如#1136-列计数与第1行的值计数不匹配。您可以发布y吗我们的insert语句?无法使用您的
    $insertQuery
    ,因为它未在函数中返回。我在问题中提到过,也可以在我的命令中打印我的查询
    function addRecord($table,$coloumn,$values){
        $insertQuery = "INSERT INTO ".$table." VALUES('".$values."')";      
    }
    
    $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);
    
    INSERT INTO employee (employee_name, employee_salary, employee_age) VALUES('Jack','12000','15');