php插入数据到mysql数据库不报错,但没有插入成功。

数据表结构:DROPTABLEIFEXISTS`testers`;CREATETABLE`testers`(`Id`int(11)NOTNULLAUTO_INCREMEN... 数据表结构:
DROP TABLE IF EXISTS `testers`;
CREATE TABLE `testers` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(12) DEFAULT NULL,
`ip` varchar(30) DEFAULT NULL,
`department` enum('科技处','政治部','管理处') DEFAULT NULL,
`score` int(11) DEFAULT NULL,
`paperid` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 COMMENT='考试人员成绩';

Php代码:
$conn = idbconn ( $db_server, $db_server_port, $db_user, $db_pass, $db_db );
//这是个mysqli对象的实例

$a=array("name".rand(0,99999),"28.33.112.".rand(1,255),1);
$sql="CALL addTester('".$a[0]."','".$a[1]."',".$a[2].",".$Score.",".$_SESSION[pid].");";
//插入数据的存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `addTester`(in tname varchar(12),in nip varchar(30),in depart int, in nscore int,in pid int)
BEGIN
insert into testers values (Null,tname,nip,depart,nscore,pid);
END;

$sql.= "CALL showPaper(1,1)";
//查询数据的存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `showPaper`(in pid int(11),in qtyp tinyint)
BEGIN
select * from questions where find_in_set(questions.id,(select ques from papers where papers.Id=pid) ) and types=qtyp;
END;

echo($sql);
//尝试使用直接插入的sql语句测试,此句在phpmyadmin和mysqlfront中可以正常插入数据。$sql="INSERT INTO `exam`.`testers` ( `name`, `ip`, `department`, `score`, `paperid`) VALUES ( '11a', '3333', '2', '333', '1')";
if ($conn->multi_query ( $sql )) {
do{
if ($result = $conn->store_result ()) {
while ( $row = $result->fetch_row () ) {
//printf("%s\n", $row[0]);
$a=$row[1];
……

}
$result->close ();

}
}while($conn->next_result());
}

最后发现查询语句执行成功,但插入语句始终没有将数据插入数据库,而sql语句应该是正确的,因为echo出来的语句在phpmyadmin和mysqlfront中可以正常插入。也试过用mysqli_query()单独执行插入功能,不论是存储过程还是insert语句,都无法插入,但是不报错,query都是返回成功值。实在是想不出原因了,请各位高手帮帮忙。
应该不是枚举的问题,枚举插入数字是对的,在mysqlfront和phpmyadmin中都是可以插入的,如果改为'政治部'之类的反而要报错。
展开
 我来答
xiaogeifeile
2010-11-19 · TA获得超过236个赞
知道小有建树答主
回答量:429
采纳率:0%
帮助的人:363万
展开全部
php报错设置,用mysql_error()
hotdigger
2010-11-19 · TA获得超过3590个赞
知道大有可为答主
回答量:1458
采纳率:50%
帮助的人:623万
展开全部
看到你的建表语句中要求department是玫举enum('科技处','政治部','管理处'),但你插入语句给的值是2,应该是这里的问题.玫举的意思是值限制在上述给定值范围中.
=========
应该mysql_query的时候会报错,只是你没有捕捉而已.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
smallland
2010-11-19 · 超过25用户采纳过TA的回答
知道答主
回答量:59
采纳率:100%
帮助的人:44.3万
展开全部
我能想到的原因:
1)同时打开的有点别的数据库资源;
2)php报错设置,用mysql_error()看看
3)文字编码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DominoHank
2010-11-19 · TA获得超过2388个赞
知道大有可为答主
回答量:3582
采纳率:33%
帮助的人:1741万
展开全部
phpinfo看看服务器装mysqli插件没。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不想说话的树
2018-05-27
知道答主
回答量:62
采纳率:0%
帮助的人:20.3万
展开全部
解决了吗?我遇到了跟你一模一样一样的问题……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式