444 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			444 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Safe;
 | |
| 
 | |
| use Safe\Exceptions\MsqlException;
 | |
| 
 | |
| /**
 | |
|  * Returns number of affected rows by the last SELECT, UPDATE or DELETE
 | |
|  * query associated with result.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @return int Returns the number of affected rows on success.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_affected_rows($result): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_affected_rows($result);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_close closes the non-persistent connection to
 | |
|  * the mSQL server that's associated with the specified link identifier.
 | |
|  *
 | |
|  * Using msql_close isn't usually necessary, as
 | |
|  * non-persistent open links are automatically closed at the end of the
 | |
|  * script's execution. See also freeing resources.
 | |
|  *
 | |
|  * @param resource|null $link_identifier The mSQL connection.
 | |
|  * If not specified, the last link opened by msql_connect
 | |
|  * is assumed. If no such link is found, the function will try to establish a
 | |
|  * link as if msql_connect was called, and use it.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_close($link_identifier = null): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($link_identifier !== null) {
 | |
|         $result = \msql_close($link_identifier);
 | |
|     } else {
 | |
|         $result = \msql_close();
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_connect establishes a connection to a mSQL
 | |
|  * server.
 | |
|  *
 | |
|  * If a second call is made to msql_connect with
 | |
|  * the same arguments, no new link will be established, but instead, the
 | |
|  * link identifier of the already opened link will be returned.
 | |
|  *
 | |
|  * The link to the server will be closed as soon as the execution of the
 | |
|  * script ends, unless it's closed earlier by explicitly calling
 | |
|  * msql_close.
 | |
|  *
 | |
|  * @param string $hostname The hostname can also include a port number. e.g.
 | |
|  * hostname,port.
 | |
|  *
 | |
|  * If not specified, the connection is established by the means of a Unix
 | |
|  * domain socket, being then more efficient then a localhost TCP socket
 | |
|  * connection.
 | |
|  *
 | |
|  * While this function will accept a colon (:) as a
 | |
|  * host/port separator, a comma (,) is the preferred
 | |
|  * method.
 | |
|  * @return resource Returns a positive mSQL link identifier on success.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_connect(string $hostname = null)
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($hostname !== null) {
 | |
|         $result = \msql_connect($hostname);
 | |
|     } else {
 | |
|         $result = \msql_connect();
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_create_db attempts to create a new database on
 | |
|  * the mSQL server.
 | |
|  *
 | |
|  * @param string $database_name The name of the mSQL database.
 | |
|  * @param resource|null $link_identifier The mSQL connection.
 | |
|  * If not specified, the last link opened by msql_connect
 | |
|  * is assumed. If no such link is found, the function will try to establish a
 | |
|  * link as if msql_connect was called, and use it.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_create_db(string $database_name, $link_identifier = null): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($link_identifier !== null) {
 | |
|         $result = \msql_create_db($database_name, $link_identifier);
 | |
|     } else {
 | |
|         $result = \msql_create_db($database_name);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_data_seek moves the internal row
 | |
|  * pointer of the mSQL result associated with the specified query
 | |
|  * identifier to point to the specified row number.  The next call
 | |
|  * to msql_fetch_row would return that
 | |
|  * row.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @param int $row_number The seeked row number.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_data_seek($result, int $row_number): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_data_seek($result, $row_number);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_db_query selects a database and executes a query
 | |
|  * on it.
 | |
|  *
 | |
|  * @param string $database The name of the mSQL database.
 | |
|  * @param string $query The SQL query.
 | |
|  * @param resource|null $link_identifier The mSQL connection.
 | |
|  * If not specified, the last link opened by msql_connect
 | |
|  * is assumed. If no such link is found, the function will try to establish a
 | |
|  * link as if msql_connect was called, and use it.
 | |
|  * @return resource Returns a positive mSQL query identifier to the query result.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_db_query(string $database, string $query, $link_identifier = null)
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($link_identifier !== null) {
 | |
|         $result = \msql_db_query($database, $query, $link_identifier);
 | |
|     } else {
 | |
|         $result = \msql_db_query($database, $query);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_drop_db attempts to drop (remove) a database
 | |
|  * from the mSQL server.
 | |
|  *
 | |
|  * @param string $database_name The name of the database.
 | |
|  * @param resource|null $link_identifier The mSQL connection.
 | |
|  * If not specified, the last link opened by msql_connect
 | |
|  * is assumed. If no such link is found, the function will try to establish a
 | |
|  * link as if msql_connect was called, and use it.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_drop_db(string $database_name, $link_identifier = null): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($link_identifier !== null) {
 | |
|         $result = \msql_drop_db($database_name, $link_identifier);
 | |
|     } else {
 | |
|         $result = \msql_drop_db($database_name);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_field_len returns the length of the specified
 | |
|  * field.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @param int $field_offset The numerical field offset. The
 | |
|  * field_offset starts at 1.
 | |
|  * @return int Returns the length of the specified field.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_field_len($result, int $field_offset): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_field_len($result, $field_offset);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_field_name gets the name of the specified field
 | |
|  * index.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @param int $field_offset The numerical field offset. The
 | |
|  * field_offset starts at 1.
 | |
|  * @return string The name of the field.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_field_name($result, int $field_offset): string
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_field_name($result, $field_offset);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Seeks to the specified field offset. If the next call to
 | |
|  * msql_fetch_field won't include a field offset, this
 | |
|  * field would be returned.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @param int $field_offset The numerical field offset. The
 | |
|  * field_offset starts at 1.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_field_seek($result, int $field_offset): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_field_seek($result, $field_offset);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Returns the name of the table that the specified field is in.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @param int $field_offset The numerical field offset. The
 | |
|  * field_offset starts at 1.
 | |
|  * @return int The name of the table on success.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_field_table($result, int $field_offset): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_field_table($result, $field_offset);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_field_type gets the type of the specified field
 | |
|  * index.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @param int $field_offset The numerical field offset. The
 | |
|  * field_offset starts at 1.
 | |
|  * @return string The type of the field. One of int,
 | |
|  * char, real, ident,
 | |
|  * null or unknown. This functions will
 | |
|  * return FALSE on failure.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_field_type($result, int $field_offset): string
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_field_type($result, $field_offset);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_free_result frees the memory associated
 | |
|  * with query_identifier.  When PHP completes a
 | |
|  * request, this memory is freed automatically, so you only need to
 | |
|  * call this function when you want to make sure you don't use too
 | |
|  * much memory while the script is running.
 | |
|  *
 | |
|  * @param resource $result The result resource that
 | |
|  * is being evaluated. This result comes from a call to
 | |
|  * msql_query.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_free_result($result): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \msql_free_result($result);
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_pconnect acts very much like
 | |
|  * msql_connect with two major differences.
 | |
|  *
 | |
|  * First, when connecting, the function would first try to find a
 | |
|  * (persistent) link that's already open with the same host.
 | |
|  * If one is found, an identifier for it will be returned instead of opening
 | |
|  * a new connection.
 | |
|  *
 | |
|  * Second, the connection to the SQL server will not be closed when the
 | |
|  * execution of the script ends.  Instead, the link will remain open for
 | |
|  * future use (msql_close will not close links
 | |
|  * established by this function).
 | |
|  *
 | |
|  * @param string $hostname The hostname can also include a port number. e.g.
 | |
|  * hostname,port.
 | |
|  *
 | |
|  * If not specified, the connection is established by the means of a Unix
 | |
|  * domain socket, being more efficient than a localhost TCP socket
 | |
|  * connection.
 | |
|  * @return resource Returns a positive mSQL link identifier on success.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_pconnect(string $hostname = null)
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($hostname !== null) {
 | |
|         $result = \msql_pconnect($hostname);
 | |
|     } else {
 | |
|         $result = \msql_pconnect();
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_query sends a query to the currently active
 | |
|  * database on the server that's associated with the specified link
 | |
|  * identifier.
 | |
|  *
 | |
|  * @param string $query The SQL query.
 | |
|  * @param resource|null $link_identifier The mSQL connection.
 | |
|  * If not specified, the last link opened by msql_connect
 | |
|  * is assumed. If no such link is found, the function will try to establish a
 | |
|  * link as if msql_connect was called, and use it.
 | |
|  * @return resource Returns a positive mSQL query identifier on success.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_query(string $query, $link_identifier = null)
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($link_identifier !== null) {
 | |
|         $result = \msql_query($query, $link_identifier);
 | |
|     } else {
 | |
|         $result = \msql_query($query);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * msql_select_db sets the current active database on
 | |
|  * the server that's associated with the specified
 | |
|  * link_identifier.
 | |
|  *
 | |
|  * Subsequent calls to msql_query will be made on the
 | |
|  * active database.
 | |
|  *
 | |
|  * @param string $database_name The database name.
 | |
|  * @param resource|null $link_identifier The mSQL connection.
 | |
|  * If not specified, the last link opened by msql_connect
 | |
|  * is assumed. If no such link is found, the function will try to establish a
 | |
|  * link as if msql_connect was called, and use it.
 | |
|  * @throws MsqlException
 | |
|  *
 | |
|  */
 | |
| function msql_select_db(string $database_name, $link_identifier = null): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($link_identifier !== null) {
 | |
|         $result = \msql_select_db($database_name, $link_identifier);
 | |
|     } else {
 | |
|         $result = \msql_select_db($database_name);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MsqlException::createFromPhpError();
 | |
|     }
 | |
| }
 |