我有一个表 user (id VARCHAR(5), name 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)";
....
}
我使用这个函数有两种参数 一)
insert('00001','00123');
---> 结果:id(1), name(123)
(所有零都被截掉了)。
二)
insert('00001','abcd');
---> 错误:“字段列表”中的未知列“abcd”。
我想问:为什么所有的零都被删掉了,为什么我使用字符串值时会出错。我怎样才能修复它以通过功能获得正确的结果。 非常感谢!
最佳答案
您从不费心引用您的值(value)观:
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
周围的 '
引号)。长期修复:开始使用准备好的语句和/或占位符,这消除了对这种引用的需要。
关于php - mysql: 1 INSERT INTO 查询两个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762905/