Php 字段';用户名';不';没有默认值

Php 字段';用户名';不';没有默认值,php,mysql,Php,Mysql,我已经在网上搜索了这个查询,我可以在这个平台上找到一些,但它们对我来说并不是很好的解释。我有一个保存消息的表,该表还包含用户名列,用于使用登录会话跟踪messenger,但每次我尝试插入消息时,我收到的字段“username”都没有默认值。这是我的密码: <?php session_start(); if(!isset($_SESSION['user_name']) || (trim($_SESSION['user_name']) == '')) { header("lo

我已经在网上搜索了这个查询,我可以在这个平台上找到一些,但它们对我来说并不是很好的解释。我有一个保存消息的表,该表还包含用户名列,用于使用登录会话跟踪messenger,但每次我尝试插入消息时,我收到的字段“username”都没有默认值。这是我的密码:

<?php
session_start();

if(!isset($_SESSION['user_name']) || (trim($_SESSION['user_name']) == '')) {
        header("location: ../login");
        exit();
    }else{

        $user= $_SESSION['user_name'];


    if(!empty($_POST['message'])) {
    include_once 'includes/config.php';
    include_once 'includes/security.php';
    include_once 'includes/smileys.php';
    $message = clean(mysql_real_escape_string($_POST['message']));
    $message = special_chars($message); 
    $time = time();
    //getting image link
    if(!empty($_POST['pic_url'])) {
        $image = strip_tags($_POST['pic_url']);
    } else {
        $image = '';
    }
    $git = '';

    //getting video link
    if(!empty($_POST['y_link'])) {
        $video = fix_url(strip_tags($_POST['y_link']));
    } else {
        $video = '';
    }

    //insert into wall table
     $query = mysql_query("INSERT INTO posts SET
      post_desc = '$message', 
      image_url = '$image',
      vid_url = '$video',
       username = '',
        git = '$user',
        post_date = '$time')") or die(mysql_error());
     $ins_id = mysql_insert_id();


?>

警告:如果您只是在学习PHP,请不要使用该界面。它是如此可怕和危险,以至于在PHP7中被删除。替换类和指南类说明了最佳实践。您的用户数据不存在,存在,并且可以被利用。该表定义充满了问题。使用InnoDB。使用
utf8
编码。使用
VARCHAR(255)
作为默认尺寸,除非需要更长的尺寸。使用
INT(11)主键自动递增
。使用
插入x(a,b,c)值(?,?)
而不是非标准的
集合
@tadman,谢谢你的建议,但是你认为是什么导致了这样的问题?这里有太多的东西让人困惑,我不确定确切的问题是什么。关于堆栈溢出,需要记住的一件事是添加您得到的精确错误消息,而不仅仅是它的近似值,这不仅在传达错误方面非常有用,但在帮助其他有同样问题的人找到这个问题时,让人困惑的是,您显示的查询无法生成该错误:
username='
CREATE TABLE `posts` (
  `post_id` int(9) NOT NULL,
  `post_desc` mediumtext NOT NULL,
  `image_url` varchar(100) NOT NULL,
  `vid_url` varchar(100) NOT NULL,
  `username` varchar(100) NOT NULL,
  `git` varchar(100) DEFAULT NULL,
  `post_date` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;