mysql:1 INSERT INTO查询两个结果

时间:2013-12-24 14:59:39

标签: php mysql mysqli

我有一个表用户(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'.

我想问:为什么所有的零都被剪掉了,为什么当我使用字符串值时会出错。如何修复它以按功能获得正确的结果。 非常感谢!

1 个答案:

答案 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引号)。长期修复:开始使用预准备语句和/或占位符,这样就无需进行此类引用。