Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql:1在查询中插入两个结果_Php_Mysql_Mysqli - Fatal编程技术网

Php mysql: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

我有一个表用户(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)";
    ....
}
我用这个函数和两种参数 (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字段是字符串。这正是我想要的。非常感谢你!