【问题标题】:How do I fix "Unknown column in 'field list'"如何修复“'字段列表'中的未知列”
【发布时间】:2015-10-11 08:10:54
【问题描述】:

我目前正在做一个学校项目,其中涉及创建一个网站供用户输入事件。但我目前面临以下问题:

无法插入事件标题 错误代码: '字段列表'中的未知列'event_title']

这是我的编码:

<?php  

$e_title = $_POST['title'];
$e_venue = $_POST['venue'];
$e_date1 = $_POST['date1'];
$e_date2 = $_POST['date2'];
$e_time1 = $_POST['time1'];
$e_time2 = $_POST['time2'];
$e_remarks = $_POST['remarks'];
$e_blurbs = $_POST['blurbs'];
$e_organiser = $_POST['organiser'];

if ($e_title=='') {
exit ("Event Field is empty. Click to <a href=addevent.php> Go Back</a>");
}

$conn = @mysql_connect ('localhost', 'root','');
if (!$conn) die ("<p>No MYSQL Connection</p>");
$conn = mysql_select_db('events');
if (!$conn) die("<p>Cannot select database</p>");

$sql = "INSERT into `event` (event_title, event_venue, event_date1, event_date2, event_time1,
event_time2, event_remarks, event_blurbs, event_organiser) VALUES ( '$e_title', '$e_venue', '$e_date1', '$e_date2', '$e_time1','$e_time2', '$e_remarks', '$e_blurbs', '$e_organiser')"; 


$result = @mysql_query ($sql);

if(!$result){
exit( "<p>Cannot insert event title</p>  Error Code: <p>". mysql_error()."</p>");
}
else {
echo "event saved successfully!";
}

?>

这是我在phpmyadmin 数据库“事件”中的编码...我目前正在使用XAMPP

CREATE TABLE EVENT(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    title TEXT,
    venue TEXT,
    date1 DATE NOT NULL
    date2 DATE NOT NULL
    time1 TIME 
    time2 TIME
    remarks TEXT,
    blurbs TEXT,
    organiser TEXT
)

【问题讨论】:

  • 在查询中将 event_title 更改为 title(其他字段也是如此)。

标签: php mysql field fieldlist


【解决方案1】:

表中的列不以event_ 开头,而INSERT 列表中的列以INSERT 开头。像这样从所有列中删除event_

$sql = "INSERT into `event` (title, venue, date1, date2, time1,
time2, remarks, blurbs, organiser) VALUES ( '$e_title', '$e_venue', '$e_date1', '$e_date2', '$e_time1','$e_time2', '$e_remarks', '$e_blurbs', '$e_organiser')"; 

您应该考虑使用mysql_* 函数,这些将在以后的版本中被删除。在用于任何数据库操作之前,还要对从表单传递的数据进行清理,以避免 SQL 注入攻击

【讨论】:

    【解决方案2】:

    删除 event_from 列名,因为您的数据库表列与您在查询中提供的列名不匹配。 所以使用:

    $sql = "INSERT into `event` (title,venue,date1,date2,time1,time2,remarks,blurbs,organiser)
      VALUES ('$e_title','$e_venue','$e_date1','$e_date2','$e_time1','$e_time2','$e_remarks','$e_blurbs','$e_organiser');"
    

    它应该可以工作

    【讨论】:

      【解决方案3】:

      只需将DB QUERY 更改为

      CREATE TABLE EVENT(
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        event_title TEXT,
        event_venue TEXT,
        event_date1 DATE NOT NULL
        event_date2 DATE NOT NULL
        event_time1 TIME 
        event_time2 TIME
        event_remarks TEXT,
        event_blurbs TEXT,
        event_organiser TEXT
      )
      

      【讨论】:

        【解决方案4】:

        数据库查询应该这样改变:

        CREATE TABLE EVENT(
            id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
            event_title TEXT,
            event_venue TEXT,
            event_date1 DATE NOT NULL
            event_date2 DATE NOT NULL
            event_time1 TIME 
            event_time2 TIME
            event_remarks TEXT,
            event_blurbs TEXT,
            event_organiser TEXT
        );
        

        或者您可以尝试将PHP脚本更改为

        $sql = "INSERT into `event` (title, venue, date1, date2, time1,
        time2, remarks, blurbs, organiser) VALUES ( '$e_title', '$e_venue', '$e_date1', '$e_date2', '$e_time1','$e_time2', '$e_remarks', '$e_blurbs', '$e_organiser')"; 
        

        不要同时进行这两项更改。报错是因为表中的属性名必须和PHP SQL传参一样。

        【讨论】:

          猜你喜欢
          • 2019-08-17
          • 2021-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-09
          相关资源
          最近更新 更多