我试图找出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');
}
}
您还没有通过字段变量:-
$rs = $con->query("INSERT INTO merit(id_user,id_num,category,timeoccur,location,remarks) VALUES ('$uid','$ic','$type','$loc','$rem')");
您选择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')");
之所以会出现错误,是因为您告诉mysql编辑6个表字段,但只给了它5个VALUES()。两者必须相等。
在查询中,您必须传递6个字段,而您正在传递5个字段因此更新您的查询如下:
$rs = $con->query("INSERT INTO merit(id_num,category,timeoccur,location,remarks) VALUES ('$uid','$ic','$type','$loc','$rem')");