我如何结合这两个陈述?

时间:2015-02-25 14:26:06

标签: perl xampp cgi

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

数据库由三列ID,name和nametwo

组成

ID是自动递增并且工作正常

这两个语句都可以自行运行,但因为它们是单独发布的,所以第一个叶子名称为空白而第二个叶子名称为空白。

我尝试过将两者结合起来但是没有多少运气,希望有人可以提供帮助。

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

3 个答案:

答案 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,
);