用PHP在MySQL中添加触发器

用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 = "

我使用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');"
$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:

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:

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:

C.5.2.14。命令不同步 如果命令不同步;现在无法在客户端代码中运行此命令, 您正在以错误的顺序调用客户端函数

例如,如果您正在使用
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
      生成的。命令不同步;现在无法运行此命令