$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是会出错的。
如果 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');
`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"].")"; 这部分应该怎么对应改动呢
$sql="INSERT INTO new (title, content, time, news_cate_id) VALUES ('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";知道了,只需要改成最初的样子就可以了,谢谢大家结贴了,结贴之前先追加点分数,以表示感谢
mysql_open();
这个说错了,无视吧,应该是弹出一个http://localhost/TestInsert/insert.php页面,IE打开的
链接数据库函数有问题,注释掉下面的函数部分就可以直接执行了!
//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;
//}
$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字段没有填导致插入失败,上面注释的部分还有问题。希望大家多帮忙,如果大家觉得分数不够我可以追加,只是觉得再开帖子麻烦了。
这样得到的result也不是数据库中存的1、2、3这样的值,然后导致更新失败,提示Error: Incorrect integer value: '' for column 'id' at row 1,想问问大家怎么样才能通过查询得到正确的id,或者result值然后插入数据库呢。
如果 id 是主键,且是自增的,那么就无需向 id 赋值
如果 id 不是主键,但不允许为空,那么不向 id 赋值就是错误的其实只要打印出 mysql_error() 的结果,就一切明了了
至少需要这样
$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是会出错的。
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');
这样的话主键就自增了对吧,但是上面对应的
$sql="INSERT INTO new (id,title, content, time, news_cate_id)
VALUES
('".$id."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";
这部分应该怎么对应改动呢
VALUES
('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";知道了,只需要改成最初的样子就可以了,谢谢大家结贴了,结贴之前先追加点分数,以表示感谢