注册 登录
编程论坛 PHP技术论坛

[求助]部分程序打包如下,在线等

青蛙 发布于 2005-12-17 15:17, 1744 次点击

写了个php程序数据库操作出了点问题,一提交表单就说数据库操作错误,这个错误是我自己定义的,找了很久都没找到原因,希望哪位大侠能替小弟解决这个问题.程序代码已经打包.

只有本站会员才能查看附件,请 登录

14 回复
#2
wangshaobo2005-12-18 09:41

如果你有什么具体问题可以提上来,让人去下载程序为你改那就太耗费时间了吧,把你具体出错的部分程序发上来.

#3
青蛙2005-12-18 11:31
<? header("Content-Type: text/html; charset=gb2312"); ?>
<?
include "conn.php";
include "replace.inc";
if($title=""||$message="")
{
echo "<table width=100% height=100% border=0>";
echo "<table width=50% border=1 bordercolor=#666666 align=center cellpadding=7><tr><td><center>错误:日记的标题和内容都不能为空!<br>";
echo "<A href=\"JavaScript:history.back()\">返回</A>";
echo "</center></td></tr></table></td></tr></table>";
exit();
}
else
{
$title=replace($title);
$message=replace($message);
}
$select=mysql_select_db($data,$db) or die("错误!");
$SQL="INSERT INTO book (id,title,message,shi,biao) VALUES (null,'".$title."','".$message."','".$shi."','".$biao."')";
mysql_query($SQL) or die("数据库操作失败!");
echo "<meta http-equiv=refresh content=0;url=index.php>";
?>
这是表单处理页面,replace()为自己定义的过滤函数.
连接文件

<? $data="bbbb";//数据库名称,请先用phpmyadmin或其他工具建立此数据库,可改成自己的数据库名称 $db=mysql_connect("localhost","root","") or die("数据库连接错误!");//服务器地址或ip ,用户名,密码 ?>






数据库相关项目
create table book(
id int(6) auto_increment primary key,
title varchar(20),
message longblob,
shi int(15),
biao int(20)
);
我一提交表单对数据库操作就出现我定义的错误信息("数据库操作失败!")
#4
wangshaobo2005-12-18 20:08

我想知道你的所有的变量:$title,$messege,$shi,$biao是否已经被本页即add.php接收到,如果连变量都没有接收到的话,还谈什么插入数据呢

#5
青蛙2005-12-19 13:42
这个我也不太清楚到底有没有接收到,能麻烦你下我的源程序看下么,整个程序就差这个问题没解决了,就等这个地方的问题解决了,希望能帮帮忙
#6
wangshaobo2005-12-19 17:38

把以上四个变量用$_POST接收一下,格式如下:$_POST["title"],问题应该就会解决

#7
青蛙2005-12-20 14:02
很不幸的是我改了还是不行
<? header("Content-Type: text/html; charset=gb2312"); ?>
<?
include "conn.php";
include "replace.inc";
$title=$_POST["title"];
$message=$_POST["message"];
$shi=$_POST["shi"];
$biao=$_POST["biao"];
if($title=""||$message="")
{
echo "<table width=100% height=100% border=0>";
echo "<table width=50% border=1 bordercolor=#666666 align=center cellpadding=7><tr><td><center>错误:日记的标题和内容都不能为空!<br>";
echo "<A href=\"JavaScript:history.back()\">返回</A>";
echo "</center></td></tr></table></td></tr></table>";
exit();
}
else
{
$title=replace($title);
$message=replace($message);
}
$select=mysql_select_db($data,$db) or die("错误!");
$SQL="INSERT INTO book (id,title,message,shi,biao) VALUES (null,'".$title."','".$message."','".$shi."','".$biao."')";
mysql_query($SQL) or die("数据库操作失败!");
echo "<meta http-equiv=refresh content=0;url=index.php>";
?>
#8
wangshaobo2005-12-20 18:18

如果你的这一句:if($title=""||$message="")不是手误的话,那么问题就是它了,因为在这里它总是为真的,这是赋值语句,直接会将前面接收到的值冲掉,变为空值,当你插入一个不允许为空的字段的时候,自然就会出错,将它改为:if($title==""||$message=="")

#9
青蛙2005-12-20 21:27
告诉版主一个很不幸的消息,那个地方手误写错了,不过改了以后还是不对,麻烦版主再看看,我已经快要崩溃了
#10
wangshaobo2005-12-21 11:53

先确认一下上一页表单中的各项命名是否与本页接收时的名字一样,然后在本页先echo 一下,不过我想你不会犯这么低级的错误而这么长时间没有调试出来吧,
将你的sql语句简练一下,没有必要弄这么多引号,估计你就是错在这里了,将你的语句如下写就可以了:$SQL="INSERT INTO book (id,title,message,shi,biao) VALUES (null,'$title','$message','$shi','$biao')";

#11
青蛙2005-12-21 15:53

表单接收的没问题,echo返回全部正常,
$SQL="INSERT INTO book (id,title,message,shi,biao) VALUES (null,'$title','$message','$shi','$biao')";我最开始用的是这样的形式不对,刚改了又测试了一遍,还是不行,版主再帮忙看看.

#12
wangshaobo2005-12-21 17:48
你的mysql没有什么问题吧,你试试还能不能进入mysql
#13
青蛙2005-12-22 13:56
mysql绝对没问题,我搭建的其他php整站程序都没问题,斑竹试下调试我的那部分程序.
#14
wangshaobo2005-12-23 17:17
你的代码我试过了,其它地方确实没有什么问题,不过也没有你所说的提示错误,只是当你插入值的时候会将你用replace.php处理过的变量全部变为空值,你还没发现原因吗?你的那个replace函数有返回值吗,太粗心了吧,在最后加上一句return($str);

还有一个重要问题,就是大概你会发现你的时间也不能够插入吧,你把它echo一下看看,它输出了什么值,而你在数据库中又把它定义为什么类型,知道了吧,以后可要细心点噢!
#15
青蛙2005-12-25 10:37
呵呵,谢谢斑竹这么耐心的教导,问题解决了,原来从头到尾是时间的类型和return($str)的问题,时间我是以字符数组形式存进去的,而我却把数据库里的时间类型设置成了int型,所以操作数据库时就出错了.
最后祝斑竹圣诞快乐,论坛里各位兄弟姐妹圣诞快乐!
1