wangliangufeng 2006-4-13 13:10
为什么mysql事务执行不了?
php代码片断:
/*-----数据库连接参数--*/
$host="localhost";
$user="root";
$pwd="xxx";
$database="luntan";
/*-----数据库连接-*/
$db=mysql_connect($host,$user,$pwd);
$sql="START TRANSACTION;
SELECT @A:=MAX(iTopicId) FROM lun_topic;
INSERT INTO lun_topic VALUES(@A+1,'主题','内容','作者',NOW(),1);
COMMIT;";
$result=mysql_db_query($database,$sql);//该句执行不了,也不报错
xingdanyinggu 2006-4-13 13:10
mysql4之前不支持事务的吧,5以后才支持的
剑心 2006-4-13 13:11
isam,myisam,heap数据表类型不支持事务。
liuzhusuoai 2006-4-13 13:11
$sql="LOCK TABLES lun_topic write;
SELECT @A:=MAX(iTopicId) FROM lun_topic;
INSERT INTO lun_topic VALUES(@A+1,主题','内容','作者',NOW(),1);//少了一个单引号
UNLOCK TABLES;";
基本上是没有错了。不过不具备事务处理机制的,用这种方法有时也不能解决的。
xingyungulang 2006-4-13 13:12
将数据库类型改为innoDB
$sql1 = "set auto_commite=0";
$sql2 = "begin";
$sql3 = "update......";
$sql4 = "update.......";
$sql5 = "commite";
$sql6 = "rollback";
mysql_query($sql1);
mysql_query($sql2);
mysql_query($sql3);
mysql_query($sql4);
if(mysql_errno)
mysql_query($sql5);
else
mysql_query($sql6);