我目前正在尝试从文本框中将数据插入数据库,$ enter / $ enter2是文本写入的位置。
数据库由三列ID,name和nametwo
组成ID是自动递增并且工作正常
这两个语句都可以自行运行,但因为它们是单独发布的,所以第一个叶子名称为空白而第二个叶子名称为空白。
我尝试过将两者结合起来但是没有多少运气,希望有人可以提供帮助。
$dbh->do("INSERT INTO $table(name) VALUES ('".$enter."')");
$dbh->do("INSERT INTO $table(nametwo) VALUES ('".$enter2."')");
答案 0 :(得分:5)
用其他人所说的话来解释:
my $sth = $dbh->prepare("INSERT INTO $table(name,nametwo) values (?,?)");
$sth->execute($enter, $enter2);
所以你不必担心引用。
答案 1 :(得分:0)
您应该阅读数据库手册。
查询应为:
$dbh->do("INSERT INTO $table(name,nametwo) VALUES ('".$enter."', '".$enter2."')");
答案 2 :(得分:0)
SQL语法是
INSERT INTO MyTable (
name_one,
name_two
) VALUES (
"value_one",
"value_two"
)
生成SQL语句的方式非常脆弱。例如,如果表名为Values
或值为Jester's
,则会失败。
解决方案1:
$dbh->do("
INSERT INTO ".$dbh->quote_identifier($table_name)."
name_one,
name_two
) VALUES (
".$dbh->quote($value_one).",
".$dbh->quote($value_two)."
)
");
解决方案2:占位符
$dbh->do(
" INSERT INTO ".$dbh->quote_identifier($table_name)."
name_one,
name_two
) VALUES (
?, ?
)
",
undef,
$value_one,
$value_two,
);