我有一个表用户(id VARCHAR(5),名称VARCHAR(30))
我以两种方式使用INSERT INTO查询:
1)直接:
...
$sql="INSERT INTO user (id,name) VALUES ('00001','abcd');
...
--->结果:id(00001), name(abcd).
这是正确的结果。
2)按功能:
function insert($id,$name)
{
$sql="INSERT INTO user (id,name) VALUES ($id,$name)";
....
}
我用2种参数使用了这个函数 一个)
insert('00001','00123');
--->结果:id(1), name(123)
(全部为零)。
b)中
insert('00001','abcd');
--->错误:Unknown column 'abcd' in 'field list'.
我想问:为什么所有的零都被剪掉了,为什么当我使用字符串值时会出错。如何修复它以按功能获得正确的结果。 非常感谢!
答案 0 :(得分:4)
你从不打扰引用自己的价值观:
INSERT INTO user (id,name) VALUES ($id,$name)
^^^^^^^^^---here
所以查询变为
INSERT INTO user (id, name) VALUES (1, abcd)
如果没有引号,abcd
被视为字段名称,而不是值。由于您的表没有名为abcd
的字段,因此您会收到错误消息。尝试:
INSERT INTO user (id,name) VALUES ($id, '$name')
作为短期修复(请注意'
周围的$name
引号)。长期修复:开始使用预准备语句和/或占位符,这样就无需进行此类引用。