此代码对存储在$ in中的所有查询执行事务。例如 $ in =" Query1; QUERY2; QUERY3;"
当其中一个失败时,它会回滚但没有效果,并且没有错误的查询会被插入到数据库中
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('ERR');
}
mysql_select_db('db445123652');
mysql_query("START TRANSACTION");
$strlen = strlen( $in);
$ini = 0;
for( $i = 0; $i <= $strlen; $i++ ) {
$char = substr( $in, $i, 1 );
if($char == ';' )
{
$resul = mysql_query(substr( $in, $ini, $i ));
if(!$resul)
{
echo mysql_error();
mysql_query("ROLLBACK");
echo 'Rollback';
break;
}
else{
$ini = $i + 1;
}
}
}
if($i==($strlen+1) && $resul)
{
echo 'OK';
mysql_query("COMMIT");
}
数据库位于1&amp; 1主机中,我通过phpmyadmin访问。
答案 0 :(得分:0)
检查您的数据库到表引擎,如果它被设置为InnoDb MyISAM和Innodb之间有区别,请参考http://www.rackspace.com/knowledge_center/article/mysql-engines-myisam-vs-innodb