示例#1
0
        //public static int poll(array &$read , array &$error , array &$reject , int $sec[, int $usec] )
        //mysqli_stmt prepare(string $query )

        /// <summary>
        /// Performs a query on the database.
        /// </summary>
        /// <returns>
        /// Returns FALSE on failure.
        /// For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.
        /// For other successful queries mysqli_query() will return TRUE</returns>
        public PhpValue query(PhpString query, int resultmode = Constants.MYSQLI_STORE_RESULT)
        {
            MySqlResultResource result;

            if (query.ContainsBinaryData)
            {
                var encoding = _connection.Context.StringEncoding;

                // be aware of binary data
                result = (MySqlResultResource)MySql.QueryBinary(encoding, query.ToBytes(encoding), _connection);
            }
            else
            {
                // standard unicode behaviour
                result = (MySqlResultResource)_connection.ExecuteQuery(query.ToString(Encoding.UTF8 /*not used*/), true);
            }


            if (result != null)
            {
                insert_id = result.Command.LastInsertedId;

                if (result.FieldCount == 0)
                {
                    // no result set => not a SELECT
                    result.Dispose();
                    return(PhpValue.True);
                }

                // TODO: resultmode

                return(PhpValue.FromClass(new mysqli_result(result)));
            }
            else
            {
                return(PhpValue.False);
            }
        }