繁体   English   中英

查询不会将用户名插入数据库

[英]Query won't insert username into database

所以我有这个查询:

mysql_query(
    "INSERT INTO  wall_post (post,username,userip,date_created)
    VALUES(
        '".checkValues($_REQUEST['value'])."',
        '".$_SESSION['user']."',
        '".$userip."',
        '".strtotime(date("Y-m-d H:i:s"))."'
    )"
);

我也尝试以这种方式进行查询:

mysql_query(
    "INSERT INTO wall_post (post,username,userip,date_created)
    VALUES(
            '".checkValues($_REQUEST['value'])."',
            $_SESSION['user'],
            '".$userip."',
            '".strtotime(date("Y-m-d H:i:s"))."'
           )"
);

插入失败时,我没有看到来自数据库的任何错误消息。

它不会将用户名插入数据库,但当我回显$_SESSION['user']时,它仍会向我显示其内容,我将不胜感激。

表结构为:

CREATE TABLE wall_post (
    p_id int(11) NOT NULL auto_increment,
    username varchar(50) NOT NULL,
    post varchar(255) NOT NULL,
    image varchar(50) NOT NULL,
    date_created int(11) NOT NULL,
    userip varchar(200) NOT NULL, PRIMARY KEY (p_id)
)

包含 $_SESSION['user'] 的值是 theil,它没有任何特殊字符,但是如果我将 $_SESSION['user'] 替换为类似 $user = "test"; 的字符串; 它将值“test”插入数据库

用于插入语句的mysql_query要么在成功时返回 True,要么在错误时返回 False。 如果成功,您必须检查返回值,如果不成功,则通过mysql_error获取错误:

$result = mysql_query($sql);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

从那里修复应该很容易。

图像列设置为 NOT NULL,但您没有在其中插入任何内容。 我怀疑删除 NOT NULL 子句,或为列设置默认值可能会解决您的问题。

附加提示。 使用 MYSQLS NOW() 作为日期。 让数据库处理那个位:)

只需检查值是什么,并确保其中没有特殊字符。

你也可以试试“'.mysql_real_escape_string($_SESSION['user']).'”

问题可能是特殊字符。

从所有评论中尝试这个

$name = isset($_REQUEST['user'])? $_REQUEST['user']: '';

mysql_query('INSERT INTO wall_post (post,username,userip,date_created) VALUES("'..checkValues($_REQUEST['value']).'", "'.$name.'","'$ipAddress'" ,"'.$timestamp.'")');

从您上面的一条评论中,我了解到,如果您回显您的查询,它会显示为

INSERT INTO wall_post (post,username,userip,date_created) 
VALUES('','theil','127.0.0.1','1309975742')

您是否在运行查询的语句之前执行此回显? 如果没有,我会要求您在通话前做回声,如下所示:

echo "INSERT INTO  wall_post (post,username,userip,date_created) VALUES(
    '".checkValues($_REQUEST['value'])."',
    '".$_SESSION['user']."',
    '".$userip."',
    '".strtotime(date("Y-m-d H:i:s"))."')"; 
mysql_query("INSERT INTO  wall_post (post,username,userip,date_created) VALUES(
    '".checkValues($_REQUEST['value'])."',
    '".$_SESSION['user']."',
    '".$userip."',
    '".strtotime(date("Y-m-d H:i:s"))."')"
);

您的查询似乎绝对没问题,应该运行良好。 用户名可能没有保存到数据库中的唯一原因是 `$_SESSION['user'] 为空或不存在。

您是否尝试过运行此回显查询 - INSERT INTO wall_post (post, username, userip, date_created) VALUES('', 'theil', '127.0.0.1', '1309975742') - 直接进入 MySQL,在提示符或任何您可能正在使用的其他客户端?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM