MysqlndUhConnection::simpleCommand

Sends a basic COM_* command

&reftitle.description; public `bool` `MysqlndUhConnection::simpleCommand` `mysqlnd_connection` `connection` `int` `command` `string` `arg` `int` `ok_packet` `bool` `silent` `bool` `ignore_upsert_status`

Sends a basic COM_* command to MySQL.

&reftitle.parameters;

`connection`

- Mysqlnd connection handle. Do not modify!

`command`

- The COM command to be send.

`arg`

- Optional COM command arguments.

`ok_packet`

- The OK packet type.

`silent`

- Whether mysqlnd may emit errors.

`ignore_upsert_status`

- Whether to ignore `UPDATE`/`INSERT` status.

&reftitle.returnvalues;

Returns &true; on success. Otherwise, returns &false;

&reftitle.examples;

### `MysqlndUhConnection::simpleCommand` example

    <?php
    function server_cmd_2_string($command) {
     $mapping = array(
      MYSQLND_UH_MYSQLND_COM_SLEEP => "MYSQLND_UH_MYSQLND_COM_SLEEP",
      MYSQLND_UH_MYSQLND_COM_QUIT => "MYSQLND_UH_MYSQLND_COM_QUIT",
      MYSQLND_UH_MYSQLND_COM_INIT_DB => "MYSQLND_UH_MYSQLND_COM_INIT_DB",
      MYSQLND_UH_MYSQLND_COM_QUERY => "MYSQLND_UH_MYSQLND_COM_QUERY",
      MYSQLND_UH_MYSQLND_COM_FIELD_LIST => "MYSQLND_UH_MYSQLND_COM_FIELD_LIST",
      MYSQLND_UH_MYSQLND_COM_CREATE_DB => "MYSQLND_UH_MYSQLND_COM_CREATE_DB",
      MYSQLND_UH_MYSQLND_COM_DROP_DB => "MYSQLND_UH_MYSQLND_COM_DROP_DB",
      MYSQLND_UH_MYSQLND_COM_REFRESH => "MYSQLND_UH_MYSQLND_COM_REFRESH",
      MYSQLND_UH_MYSQLND_COM_SHUTDOWN => "MYSQLND_UH_MYSQLND_COM_SHUTDOWN",
      MYSQLND_UH_MYSQLND_COM_STATISTICS => "MYSQLND_UH_MYSQLND_COM_STATISTICS",
      MYSQLND_UH_MYSQLND_COM_PROCESS_INFO => "MYSQLND_UH_MYSQLND_COM_PROCESS_INFO",
      MYSQLND_UH_MYSQLND_COM_CONNECT => "MYSQLND_UH_MYSQLND_COM_CONNECT",
      MYSQLND_UH_MYSQLND_COM_PROCESS_KILL => "MYSQLND_UH_MYSQLND_COM_PROCESS_KILL",
      MYSQLND_UH_MYSQLND_COM_DEBUG => "MYSQLND_UH_MYSQLND_COM_DEBUG",
      MYSQLND_UH_MYSQLND_COM_PING => "MYSQLND_UH_MYSQLND_COM_PING",
      MYSQLND_UH_MYSQLND_COM_TIME => "MYSQLND_UH_MYSQLND_COM_TIME",
      MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT => "MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT",
      MYSQLND_UH_MYSQLND_COM_CHANGE_USER => "MYSQLND_UH_MYSQLND_COM_CHANGE_USER",
      MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP => "MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP",
      MYSQLND_UH_MYSQLND_COM_TABLE_DUMP => "MYSQLND_UH_MYSQLND_COM_TABLE_DUMP",
      MYSQLND_UH_MYSQLND_COM_CONNECT_OUT => "MYSQLND_UH_MYSQLND_COM_CONNECT_OUT",
      MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED => "MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED",
      MYSQLND_UH_MYSQLND_COM_STMT_PREPARE => "MYSQLND_UH_MYSQLND_COM_STMT_PREPARE",
      MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE => "MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE",
      MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA => "MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA",
      MYSQLND_UH_MYSQLND_COM_STMT_CLOSE => "MYSQLND_UH_MYSQLND_COM_STMT_CLOSE",
      MYSQLND_UH_MYSQLND_COM_STMT_RESET => "MYSQLND_UH_MYSQLND_COM_STMT_RESET",
      MYSQLND_UH_MYSQLND_COM_SET_OPTION => "MYSQLND_UH_MYSQLND_COM_SET_OPTION",
      MYSQLND_UH_MYSQLND_COM_STMT_FETCH => "MYSQLND_UH_MYSQLND_COM_STMT_FETCH",
      MYSQLND_UH_MYSQLND_COM_DAEMON => "MYSQLND_UH_MYSQLND_COM_DAEMON",
      MYSQLND_UH_MYSQLND_COM_END => "MYSQLND_UH_MYSQLND_COM_END",
     );
     return (isset($mapping[$command])) ? $mapping[$command] : 'unknown';
    }

    function ok_packet_2_string($ok_packet) {
     $mapping = array(
      MYSQLND_UH_MYSQLND_PROT_GREET_PACKET => "MYSQLND_UH_MYSQLND_PROT_GREET_PACKET",
      MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET => "MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET",
      MYSQLND_UH_MYSQLND_PROT_OK_PACKET => "MYSQLND_UH_MYSQLND_PROT_OK_PACKET",
      MYSQLND_UH_MYSQLND_PROT_EOF_PACKET => "MYSQLND_UH_MYSQLND_PROT_EOF_PACKET",
      MYSQLND_UH_MYSQLND_PROT_CMD_PACKET => "MYSQLND_UH_MYSQLND_PROT_CMD_PACKET",
      MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET => "MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET",
      MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET => "MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET",
      MYSQLND_UH_MYSQLND_PROT_ROW_PACKET => "MYSQLND_UH_MYSQLND_PROT_ROW_PACKET",
      MYSQLND_UH_MYSQLND_PROT_STATS_PACKET => "MYSQLND_UH_MYSQLND_PROT_STATS_PACKET",
      MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET => "MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET",
      MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET => "MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET",
      MYSQLND_UH_MYSQLND_PROT_LAST => "MYSQLND_UH_MYSQLND_PROT_LAST",
     );
     return (isset($mapping[$ok_packet])) ? $mapping[$ok_packet] : 'unknown';
    }

    class proxy extends MysqlndUhConnection {
     public function simpleCommand($conn, $command, $arg, $ok_packet, $silent, $ignore_upsert_status) {
      printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
      printf("Command '%s'\n", server_cmd_2_string($command));
      printf("OK packet '%s'\n",  ok_packet_2_string($ok_packet));
      $ret = parent::simpleCommand($conn, $command, $arg, $ok_packet, $silent, $ignore_upsert_status);
      printf("%s returns %s\n", __METHOD__, var_export($ret, true));
      return $ret;
     }
    }
    mysqlnd_uh_set_connection_proxy(new proxy());
    $mysqli = new mysqli("localhost", "root", "", "test");
    $mysqli->query("SELECT 1");
    ?>

&example.outputs;

    proxy::simpleCommand(array (
      0 => NULL,
      1 => 3,
      2 => 'SELECT 1',
      3 => 13,
      4 => false,
      5 => false,
    ))
    Command 'MYSQLND_UH_MYSQLND_COM_QUERY'
    OK packet 'MYSQLND_UH_MYSQLND_PROT_LAST'
    proxy::simpleCommand returns true
    :)proxy::simpleCommand(array (
      0 => NULL,
      1 => 1,
      2 => '',
      3 => 13,
      4 => true,
      5 => true,
    ))
    Command 'MYSQLND_UH_MYSQLND_COM_QUIT'
    OK packet 'MYSQLND_UH_MYSQLND_PROT_LAST'
    proxy::simpleCommand returns true

&reftitle.seealso;

- `mysqlnd_uh_set_connection_proxy`