[英]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.