Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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
Php mysql-在有效的插入语法中返回false_Php_Mysql - Fatal编程技术网

Php mysql-在有效的插入语法中返回false

Php mysql-在有效的插入语法中返回false,php,mysql,Php,Mysql,我试图找出mysql在这里抛出的错误,但我不知道如何解决这个问题。我以前也遇到过同样的问题,但这只是由values变量中的无效语法引起的,但这次我找不到它有什么问题。有人能帮我吗 我的mysql表: CREATE TABLE IF NOT EXISTS `merit` ( `id` int(11) NOT NULL, `id_user` text, `id_num` text, `category` text, `timeoccur` text, `location` t

我试图找出mysql在这里抛出的错误,但我不知道如何解决这个问题。我以前也遇到过同样的问题,但这只是由values变量中的无效语法引起的,但这次我找不到它有什么问题。有人能帮我吗

我的mysql表:

CREATE TABLE IF NOT EXISTS `merit` (
  `id` int(11) NOT NULL,
  `id_user` text,
  `id_num` text,
  `category` text,
  `timeoccur` text,
  `location` text,
  `remarks` text
)

ALTER TABLE `merit`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `merit`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
php代码:

function add_merit($d) {
    //id_user,id_num,type,time_occur,venue,description
    global $con; //this global tested and works
    foreach ($d as $k=>$v) {
        if ($v == "") {
            header('location: merit.php?method=error');
            die();
        }
        else {
            continue;
        }
    }
    $ic = $d['ic'];
    $type = $d['type']; 
    $loc = $d['loc'];
    $rem = $d['rem'];
    $uid = uid(); // function call on other php, tested and works
    $rs = $con->query("INSERT INTO merit(id_user,id_num,category,timeoccur,location,remarks) VALUES ('$uid','$ic','$type','$loc','$rem')");
    die(var_dump($rs)); //this returns false
    if ($rs) {
        //header('location: merit.php?method=success');
        die('ok');
    }
    else {
        //header('location: merit.php?method=error');
        die('err');
    }
}

您正在选择6个字段进行插入,并传递5个值

columns :- id_user,id_num,category,timeoccur,location,remarks
values :- '$uid','$ic','$type','$loc','$rem'

因此,请查看并在查询中发送正确的值。

值中有6个字段。缺少一个字段

$rs = $con->query("INSERT INTO merit(id_num,category,timeoccur,location,remarks) VALUES ('$uid','$ic','$type','$loc','$rem')");

您尚未传递字段变量:-

$rs = $con->query("INSERT INTO merit(id_user,id_num,category,timeoccur,location,remarks) VALUES ('$uid','$ic','$type','$loc','$rem')");

之所以会出现这种错误,是因为您告诉mysql编辑6个表字段,但只给它5个值()。它们必须相等。

在查询中,您必须通过6个字段,而您要通过5个字段 因此,请按如下方式更新您的查询:

 $rs = $con->query("INSERT INTO merit(id_num,category,timeoccur,location,remarks) VALUES ('$uid','$ic','$type','$loc','$rem')");

trigger\u error('query failed',E\u USER\u error)
谢谢,现在我意识到timeoccure缺少它的值。我只是没有注意到这一点。