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

时间:2011-07-06 15:29:09

标签: php mysql

所以我得到了这个问题:

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,它没有任何特殊字符,但如果我用$ user =“test”这样的字符串替换$ _SESSION ['user'];它会将值“test”插入数据库

4 个答案:

答案 0 :(得分:2)

插入语句的

mysql_query成功时返回True,错误时返回False。您必须检查返回值是否成功,如果不成功则通过mysql_error获取错误:

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

应该很容易从那里修复。

答案 1 :(得分:2)

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

补充提示。使用MYSQLS NOW()作为日期。只需让数据库处理该位:)

答案 2 :(得分:1)

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

您也可以尝试“'.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'])。'”,  “ '$名'。”, “ '$ ip地址'”,“” $时间戳。” ')');

答案 3 :(得分:1)

根据您上面的一条评论,我了解到,如果您回显查询,则显示为

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中?