PHP与mysql点连接问题
include("conb.php");
if($_POST['submit']){
$sql1="insert into message (id,user,title,content,) " . "values ('','$_POST[user]','$_POST[title]','$_POST[content]')"; mysql_query($sql1); echo "<script language=\"javascript\">alert(\'回复成功\');history.go(-1)</script>";
} include("head.php");?><SCRIPT language=javascript>function CheckPost(){ if (myform.content.value=="") { alert("必须要填写留言内容"); myform.content.focus(); return false; }}</SCRIPT> <form action="adb.php" method="post" name="myform" onSubmit="return CheckPost();"> 回复的内容: <br><textarea name="content" cols="60" rows="9"></textarea> <br/>
<input type="submit" name="submit" value="回复留言"/>
</form>
最后输出是这样的
但是我每次提交之后内容都不在我指定的数据库中
的别说明:写代码的时候我用了格式的只是复制上来就没有格式了
conb.php文件的代码是这样的
<?php
$conb = @ mysql_connect("localhost", "root", "root") or die("数据库链接错误");
mysql_select_db("test", $conb);
mysql_query("set names 'GBK'"); //使用GBK中文编码;
function htmtocode($content1) {
$content1 = str_replace("\n", "<br>", str_replace(" ", " ", $content1));
return $content1;
}
//$content1=str_replace("'","‘",$content1);
//htmlspecialchars();
?> 展开
第一、你的表单中,有2个表单元素,一个是多行文本框,一个是提交按钮,
多行文本框name属性是:content,那么,你的sql语句中的$_POST[user]','$_POST[title]',上哪里获取值啊???
你压根表单就没有提供这2个对应的表单域,那$_POST怎么或取到值呢?很明显,你这2个是空值,那么,sql语句相当于:
$sql1="insert into message (id,user,title,content,) values ('','','','$_POST[content]')";
等于你的sql语句是将数据表的id字段、user字段,title字段写入空值,那么,你的数据表的这3个字段,是否允许写入空值呢?如果可以,那么,这条sql语句能运行成功。
第二、还是这条sql语句,你是否会觉得在sql语句字段部分,多出一个逗号呢?
由于这个多余的逗号,造成整条sql语句语法错误,那么sql语句执行当然不成功了
最后给你一个建议,开发php的时候,特别是有关数据库的操作的时候,要习惯输出msyql错误,这样就知道操作数据库的时候,失败的原因是什么,便于及时和有目的的改正。
比如你这个,可以这样改
<?php
include_once 'conb.php';
if($_POST['submit']){
$sql1="insert into message (id,user,title,content) " .
"values ('','$_POST[user]','$_POST[title]','$_POST[content]')";
$msesg = mysql_query($sql1) ? '回复成功' : '回复失败' .mysql_error();
echo "<script language=\"javascript\">alert(\'" . $msesg . "\');history.go(-1)</script>";
}
include_once 'head.php';
?>