我怎样才能结合这两个陈述?

How can I combine these two statements?

我目前正在尝试将数据从文本框插入数据库,$enter / $enter2 是写入文本的位置。

数据库由ID、name、nametwo三列组成

ID 自动递增并且工作正常

这两个语句本身都可以正常工作,但是因为它们是单独发布的,第一个将 nametwo 留空,第二个将 name 留空。

我试过将两者结合起来,但运气不佳,希望有人能提供帮助。

$dbh->do("INSERT INTO $table(name) VALUES ('".$enter."')");
$dbh->do("INSERT INTO $table(nametwo) VALUES ('".$enter2."')");

你应该阅读数据库手册。

查询应该是:

$dbh->do("INSERT INTO $table(name,nametwo) VALUES ('".$enter."', '".$enter2."')");

套用别人的话:

   my $sth = $dbh->prepare("INSERT INTO $table(name,nametwo) values (?,?)");
   $sth->execute($enter, $enter2);

因此您不必担心引用问题。

SQL语法是

INSERT INTO MyTable (
           name_one,
           name_two
       ) VALUES (
           "value_one",
           "value_two"
       )

您生成 SQL 语句的方式非常脆弱。例如,如果 table 名称为 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,
);