用PHP在MySQL中添加触发器
我使用PhpMyAdmin运行以下SQL语句用PHP在MySQL中添加触发器,php,mysql,sql,triggers,Php,Mysql,Sql,Triggers,我使用PhpMyAdmin运行以下SQL语句 CREATE TRIGGER `insert_channel_test2` AFTER DELETE ON `channel_test2` FOR EACH ROW INSERT INTO `tv`.`LOG_test2` (`table_name`, `table_action`) VALUES('channel_test2', 'delete'); 它工作得很成功,但当我使用PHP网页查询上述代码时,出现了致命错误 $query = "
CREATE TRIGGER `insert_channel_test2` AFTER DELETE ON `channel_test2` FOR EACH ROW INSERT INTO `tv`.`LOG_test2` (`table_name`, `table_action`) VALUES('channel_test2', 'delete');
它工作得很成功,但当我使用PHP网页查询上述代码时,出现了致命错误
$query = "CREATE TRIGGER `insert_channel_test2` AFTER DELETE ON `channel_test2` FOR EACH ROW INSERT INTO `tv`.`LOG_test2` (`table_name`, `table_action`) VALUES('channel_test2', 'delete');"
$this->link = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME );
$full_query = $this->link->multi_query( $query );
下面是错误消息
Commands out of sync; you can't run this command now
每个人都知道问题是什么吗?
谢谢 根据MySQL:
C.5.2.14。命令不同步
如果命令不同步;现在无法在客户端代码中运行此命令,
您正在以错误的顺序调用客户端函数
例如,如果您正在使用mysql\u use\u result()
,并在调用mysql\u free\u result()
之前尝试执行新查询,则可能会发生这种情况。如果您尝试执行两个返回数据的查询而不调用mysql\u use\u result()
或mysql\u store\u result()
,则也可能发生这种情况
请参阅:
- 我对类似问题的一个答案是:
mysql\u use\u result()
,并在调用mysql\u free\u result()
之前尝试执行新查询,则可能会发生这种情况。如果您尝试执行两个返回数据的查询而不调用mysql\u use\u result()
或mysql\u store\u result()
,则也可能发生这种情况
请参阅:
- 我对类似问题的一个答案是:
mysql\u use\u result()
,并在调用mysql\u free\u result()
之前尝试执行新查询,则可能会发生这种情况。如果您尝试执行两个返回数据的查询而不调用mysql\u use\u result()
或mysql\u store\u result()
,则也可能发生这种情况
请参阅:
- 我对类似问题的一个答案是:
mysql\u use\u result()
,并在调用mysql\u free\u result()
之前尝试执行新查询,则可能会发生这种情况。如果您尝试执行两个返回数据的查询而不调用mysql\u use\u result()
或mysql\u store\u result()
,则也可能发生这种情况
请参阅:
- 我对类似问题的一个答案是:
- 谢谢大家。
我将代码修改为如下,并修复了问题
public function multi_query( $query )
{
$query = $this->link->multi_query( $query );
$this->clear_next();
if( mysqli_error( $this->link ) )
{
$this->log_db_errors( mysqli_error( $this->link ), $query, 'Fatal' );
return false;
}
else
{
return true;
}
mysqli_free_result( $query );
}
public function clear_next()
{
while($this->link->more_results())
{
$this->link->next_result();
if($res = $this->link->store_result())
{
$res->free();
}
}
}
谢谢大家。
我将代码修改为如下,并修复了问题
public function multi_query( $query )
{
$query = $this->link->multi_query( $query );
$this->clear_next();
if( mysqli_error( $this->link ) )
{
$this->log_db_errors( mysqli_error( $this->link ), $query, 'Fatal' );
return false;
}
else
{
return true;
}
mysqli_free_result( $query );
}
public function clear_next()
{
while($this->link->more_results())
{
$this->link->next_result();
if($res = $this->link->store_result())
{
$res->free();
}
}
}
谢谢大家。
我将代码修改为如下,并修复了问题
public function multi_query( $query )
{
$query = $this->link->multi_query( $query );
$this->clear_next();
if( mysqli_error( $this->link ) )
{
$this->log_db_errors( mysqli_error( $this->link ), $query, 'Fatal' );
return false;
}
else
{
return true;
}
mysqli_free_result( $query );
}
public function clear_next()
{
while($this->link->more_results())
{
$this->link->next_result();
if($res = $this->link->store_result())
{
$res->free();
}
}
}
谢谢大家。
我将代码修改为如下,并修复了问题
public function multi_query( $query )
{
$query = $this->link->multi_query( $query );
$this->clear_next();
if( mysqli_error( $this->link ) )
{
$this->log_db_errors( mysqli_error( $this->link ), $query, 'Fatal' );
return false;
}
else
{
return true;
}
mysqli_free_result( $query );
}
public function clear_next()
{
while($this->link->more_results())
{
$this->link->next_result();
if($res = $this->link->store_result())
{
$res->free();
}
}
}
可能是权限错误,请尝试实际打印错误消息。您可以从mysqli获得的实际错误是什么?您发布的是您的自定义错误消息,它显示时间和9的查询,但不包含来自MySQL的真实错误消息。抱歉,以下错误消息是由
mysqli\u error
生成的。命令不同步;您现在无法运行此命令权限错误,请尝试实际打印错误消息。您可以从mysqli获得的实际错误是什么?您发布的是您的自定义错误消息,它显示时间和9的查询,但不包含来自MySQL的真实错误消息。抱歉,以下错误消息是由mysqli\u error
生成的。命令不同步;您现在无法运行此命令权限错误,请尝试实际打印错误消息。您可以从mysqli获得的实际错误是什么?您发布的是您的自定义错误消息,它显示时间和9的查询,但不包含来自MySQL的真实错误消息。抱歉,以下错误消息是由mysqli\u error
生成的。命令不同步;您现在无法运行此命令权限错误,请尝试实际打印错误消息。您可以从mysqli获得的实际错误是什么?您发布的是您的自定义错误消息,它显示时间和9的查询,但不包含来自MySQL的真实错误消息。抱歉,以下错误消息是由mysqli\u error
生成的。命令不同步;现在无法运行此命令