本帖最后由 UR_Not_Alone 于 2013-06-03 11:55:36 编辑

解决方案 »

  1.   

    include("connect_mysql.php");
    mysql_open();
      

  2.   

    不行啊,还是点击提交后,就打开insert.php,没有执行插入操作
      

  3.   

    就打开insert.php 是什么意思?
      

  4.   

    楼主确认php环境没问题???
      

  5.   

    没看见楼主的提交按钮有onclick事件啊?
      

  6.   

    打开的意思就是,会用系统默认的php文件编辑器打开insert.php,例如,我这默认使用Emeditor打开
      

  7.   

    php环境配好了没有,文件有没有放入web服务器根目录下,怎么访问的?
      

  8.   

    php环境配置应该没问题,我用的是eclipse_php,文件放在D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TestInsert(TestInsert是工程名),然后访问http://localhost/TestInsert/Page.html填写数据后,点击提交,弹出一个http://localhost/TestInsert/insert.php页面,但是数据库里面什么都没变啊。
      

  9.   

    打开的意思就是,会用系统默认的php文件编辑器打开insert.php,例如,我这默认使用Emeditor打开
    这个说错了,无视吧,应该是弹出一个http://localhost/TestInsert/insert.php页面,IE打开的
      

  10.   

    弹出下载页面说明php环境没有搭配成功
      

  11.   

    我觉得应该不是环境的问题,如果我直接把插入语句写在一个php中(值直接写好),是可以插入数据到数据库的,但是这种从页面获取的就不行。
      

  12.   

    而且我检查过了,PHP5,Mysql,Apache以及eclipse的安装,没看出啥问题
      

  13.   

    ,问题出现在链接数据库上,
    链接数据库函数有问题,注释掉下面的函数部分就可以直接执行了!
    //function mysql_open()
    //{
    $mysql_servername="localhost"; //
    $mysql_username="root";
    $mysql_password="11111";
    $mysql_dbname="new";
     
    $conn=mysql_connect($mysql_servername ,$mysql_username ,$mysql_password);
          mysql_query("set names UTF8"); //UTF8
          mysql_select_db($mysql_dbname , $conn);
       //   return $conn;
    //}
      

  14.   

    <?php
    $con = mysql_connect("localhost","root","11111");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    mysql_select_db("new", $con);
    $sql1 = "select max(id) from new";
    if(!mysql_query($sql1))
    {
    die('Error: '.mysql_error());
    }
    $result = mysql_query($sql1);
    $id = mysqli_fetch_assoc($result);$sql="INSERT INTO new (id,title, content, time, news_cate_id)
    VALUES
    ('".$id."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";
    //('2','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";
    //将ID直接写成2可以更新,但我想实现自动根据数据库中最大ID(如果有更好的办法请大家说一下)更新
    //但是这里得到的ID却不是“1”“2”这样的值,谁知道怎么回事。
    if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }echo "1 record added";//mysql_close($con)
    //$q = "insert into new (title,content,time,news_cate_id) values('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";
    //mysql_query($q);
    //if(mysql_affected_rows()>0) echo "xinwentianjiachenggong!";
    ?>
    <hr />
    <a href="Page.html" target="win">fanhuijixutianjiaxinwen</a>我将代码改成上面的样子通过错误信息发现是因为Id字段没有填导致插入失败,上面注释的部分还有问题。希望大家多帮忙,如果大家觉得分数不够我可以追加,只是觉得再开帖子麻烦了。
      

  15.   

    $result = mysql_query($sql1);
    这样得到的result也不是数据库中存的1、2、3这样的值,然后导致更新失败,提示Error: Incorrect integer value: '' for column 'id' at row 1,想问问大家怎么样才能通过查询得到正确的id,或者result值然后插入数据库呢。
      

  16.   

    如果 id 是主键,那么因为主键不能重复,你向其赋 max(id) 显然是不对的!应为 max(id) + 1
    如果 id 是主键,且是自增的,那么就无需向 id 赋值
    如果 id 不是主键,但不允许为空,那么不向 id 赋值就是错误的其实只要打印出 mysql_error() 的结果,就一切明了了
      

  17.   

    $id = mysqli_fetch_assoc($result); //连接用mysql,这里又用mysqli,肯定要错了,且返回的是一个数组
    至少需要这样
     
    $sql="INSERT INTO new (id,title, content, time, news_cate_id)
    VALUES
    ('".$id['max(id)']."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";如果你的id是主键,插入同一个id是会出错的。
      

  18.   

    如果 id 是主键,那么因为主键不能重复,你向其赋 max(id) 显然是不对的!应为 max(id) + 1这个我知道,只不过上面写得吧$id++;那句漏掉了。
    id是主键,怎么设置主键自增啊。是不是在建表的时候哪里能设置啊?我数据库的sql如下,哪里不对么?
    /*
    Navicat MySQL Data TransferSource Server         : test
    Source Server Version : 50153
    Source Host           : localhost:3306
    Source Database       : newTarget Server Type    : MYSQL
    Target Server Version : 50153
    File Encoding         : 65001Date: 2013-06-04 14:21:53
    */SET FOREIGN_KEY_CHECKS=0;
    -- ----------------------------
    -- Table structure for `new`
    -- ----------------------------
    DROP TABLE IF EXISTS `new`;
    CREATE TABLE `new` (
      `id` int(11) NOT NULL,
      `title` varchar(50) DEFAULT NULL,
      `content` varchar(100) DEFAULT NULL,
      `time` datetime DEFAULT NULL,
      `news_cate_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
    -- Records of new
    -- ----------------------------
    INSERT INTO `new` VALUES ('1', '111', '111', '2013-06-04 09:40:29', '1');
    INSERT INTO `new` VALUES ('2', 'eee', 'eeee', '2013-06-04 13:28:20', '1');
      

  19.   

    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    这样的话主键就自增了对吧,但是上面对应的
    $sql="INSERT INTO new (id,title, content, time, news_cate_id)
    VALUES
    ('".$id."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";
    这部分应该怎么对应改动呢
      

  20.   

    $sql="INSERT INTO new (title, content, time, news_cate_id)
    VALUES
    ('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";知道了,只需要改成最初的样子就可以了,谢谢大家结贴了,结贴之前先追加点分数,以表示感谢