【问题标题】:#1054 - Unknown column 'domain.com' in 'field list'#1054 - “字段列表”中的未知列“domain.com”
【发布时间】:2012-09-07 02:44:11
【问题描述】:

好的,两天后的第二个问题......我可能在这里犯了一个新手错误,但我被卡住了。

试图将域名插入到“名称”列下的表中。我所有的变量都会回显,所以我知道它们正在被传递和设置。

插入如下:

$newDomain = $_POST['newDomain']; //Get domain name
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ($newDomain)");
header("Location: domain_detail.php?domain=".$newDomain);

我尝试了很多方法来编写这个脚本,但每次我在包含以下内容时得到相同的结果:

or die(mysql_error)

在脚本中。查询没有运行,当我取出模具部分时,它只是跳转到标题位置。

【问题讨论】:

    标签: php mysql insert mysql-error-1054


    【解决方案1】:

    您需要确保在插入语句中用引号将字符串括起来。

    试试这个:

    $newDomain = $_POST['newDomain']; //Get domain name
    $newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ('$newDomain')");
    header("Location: domain_detail.php?domain=".$newDomain);
    

    【讨论】:

    • 谢谢!我告诉过你这是一个新手错误。有趣的是我以为我已经尝试过了,但看起来我没有:)
    【解决方案2】:

    您在价值周围缺少引号。查询应该是:

    "INSERT INTO virtual_domains (name) VALUES ('$newDomain')"
    

    【讨论】:

      【解决方案3】:

      扩展 Ken 的答案,让 mysql 使用 mysql_real_escape_string 处理引号的转义是一个好主意(特别是对于通过 post/get 发送的数据)。你可以这样做:

      $newDomain = $_POST['newDomain']; //Get domain name
      $newDomainEscaped = mysql_real_escape_string($newDomain);
      $newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ('$newDomainEscaped')");
      header("Location: domain_detail.php?domain=".$newDomain);
      

      如果有人在他们的“newDomain”中意外使用撇号,或者更糟糕的是任何 SQL 注入,这将有助于防止任何错误。

      【讨论】:

        猜你喜欢
        • 2020-10-27
        • 2018-10-21
        • 1970-01-01
        • 2021-01-26
        • 2014-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        相关资源
        最近更新 更多