Php mysql:1在查询中插入两个结果
我有一个表用户(id VARCHAR(5),名称VARCHAR(30)) 我以两种方式使用INSERT INTO查询: 1) 直接:Php mysql:1在查询中插入两个结果,php,mysql,mysqli,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) VALUE
...
$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)";
....
}
我用这个函数和两种参数
(a)
--->结果:id(1)、name(123)
(所有零都已被删除)
(b)
--->错误:字段列表中的未知列“abcd”。
我想问:为什么所有的零都被切掉了,为什么当我使用字符串值时它会出错。如何通过函数修复它以获得正确的结果。
非常感谢 你从不费心引用你的价值观:
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
引号)。长期解决方案:开始使用预先准备好的语句和/或占位符,这样就不需要这种引用。您从未费心引用您的值:
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
引号)。长期解决方案:开始使用预先准备好的语句和/或占位符,这样就不需要这种引用。除了手头的问题之外。。为什么要使用varchar作为ID列?为什么不直接使用整数,自动递增?那你也赢了,;您不必担心重复。您必须在查询中使用单引号(')$sql=“插入用户(id,名称)值(“$id”,“$name”)”;除了手头的问题。。为什么要使用varchar作为ID列?为什么不直接使用整数,自动递增?那你也赢了,;您不必担心重复。您必须在查询中使用单引号(')$sql=“插入用户(id,名称)值(“$id”,“$name”)”;“编辑必须是6个字符”…这太愚蠢了。要解决前导的零剥离问题,请在$id周围加引号。无论如何,使用零填充和非int id字段都是非常愚蠢的。在查询数据以便显示时,可以很容易地重新应用填充。同意,但我们不知道OP的要求。也许有人坚持ID字段是字符串。这正是我想要的。非常感谢你!“编辑必须是6个字符”…这太愚蠢了。要解决前导的零剥离问题,请在$id周围加引号。无论如何,使用零填充和非int id字段都是非常愚蠢的。在查询数据以便显示时,可以很容易地重新应用填充。同意,但我们不知道OP的要求。也许有人坚持ID字段是字符串。这正是我想要的。非常感谢你!