我正在尝试通过转换为mysqli来转换一些旧代码。不幸的是我无法弄清楚代码的哪些部分正在尝试,所以我不知道如何更改它。这似乎是一个标准的安全检查,每个人使用原始的mysql扩展使用,但我找不到任何解释原因的人。这是原始代码:
function query($query = "", $transaction = FALSE)
{
//
// Remove any pre-existing queries
//
unset($this->query_result);
if( $query != "" )
{
$this->num_queries++;
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
{
$result = mysql_query("BEGIN", $this->db_connect_id);
if(!$result)
{
return false;
}
$this->in_transaction = TRUE;
}
$this->query_result = mysql_query($query, $this->db_connect_id);
}
else
{
if( $transaction == END_TRANSACTION && $this->in_transaction )
{
$result = mysql_query("COMMIT", $this->db_connect_id);
}
}
if( $this->query_result )
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
if( $transaction == END_TRANSACTION && $this->in_transaction )
{
$this->in_transaction = FALSE;
if ( !mysql_query("COMMIT", $this->db_connect_id) )
{
mysql_query("ROLLBACK", $this->db_connect_id);
return false;
}
}
return $this->query_result;
}
else
{
if( $this->in_transaction )
{
mysql_query("ROLLBACK", $this->db_connect_id);
$this->in_transaction = FALSE;
}
return false;
}
}
我无法弄清楚他们正在做什么
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
有人可以向我解释一下吗?
答案 0 :(得分:1)
标记BEGIN_TRANSACTION
和END_TRANSACTION
是定义的任意常量,以使代码更具可读性。基本上,这整个函数是mysql
中的MySQL事务的实现,它不直接支持它们。许多代码只是为了确定事务是否已经启动,以及是否提交,或者将其回滚。
您可以使用mysqli::begin_transaction()
,mysqli::commit()
和mysqli::rollback()
PHP引用为here