我正在尝试将一些数据提交到我的mysql数据库,但是没有出现任何数据。有人可以帮我弄清楚我做错了什么。
提交表单后的PHP文件:
$db_name="database";
$tbl_name="messages";
session_start();
$from= $_SESSION['username'];
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get data that sent from form
$to=$_POST['to'];
$subject=$_POST['subject'];
$message=$_POST['message'];
$date = date('m/d/Y');
$sql="INSERT INTO $tbl_name(to, from, message, subject, date,read)VALUES('$to', '$from', $message', '$subject', '$date',0)";
$result=mysql_query($sql);
注意:服务器正在运行。数据库名称:数据库表名:消息
答案 0 :(得分:2)
to
和from
是reserved words,必须用反引号包装。
(`to`, `from`, message, subject, date,read)
如果可能的话,最好不要选择那些词。
另外,$message'
中缺少的引号更改为'$message'
('$to', '$from', '$message', '$subject', '$date',0)
同时删除以下引号:
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
为:
mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
使用错误报告。
另外,您目前的代码向SQL injection开放。将mysqli_*
与prepared statements或PDO
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。
<强>密码强>
我还注意到您以纯文本格式存储密码。不建议这样做。
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
答案 1 :(得分:0)
通过添加以下内容来回显您的查询:
$sql="INSERT INTO $tbl_name(to, from, message, subject, date,read)VALUES('$to', '$from', $message', '$subject', '$date',0)";
die($sql);
给了我这个:
INSERT INTO messages(to, from, message, subject, date,read)VALUES('', '', ', '', '04/08/2014',0)
这条消息中没有引用的消息&#39; ...更改此行:
$sql="INSERT INTO $tbl_name(to, from, message, subject, date,read)VALUES('$to', '$from', '$message', '$subject', '$date',0)";