]> granicus.if.org Git - php/commitdiff
add sqlite_exec()
authorStanislav Malyshev <stas@php.net>
Thu, 13 May 2004 14:19:10 +0000 (14:19 +0000)
committerStanislav Malyshev <stas@php.net>
Thu, 13 May 2004 14:19:10 +0000 (14:19 +0000)
ext/sqlite/php_sqlite.h
ext/sqlite/sqlite.c

index e0ae4113d3f3e29d17f649f1d12c77313b39b656..04d2a101df335a537099e75fb5253195e7d3baba 100644 (file)
@@ -46,6 +46,7 @@ PHP_FUNCTION(sqlite_open);
 PHP_FUNCTION(sqlite_popen);
 PHP_FUNCTION(sqlite_close);
 PHP_FUNCTION(sqlite_query);
+PHP_FUNCTION(sqlite_exec);
 PHP_FUNCTION(sqlite_unbuffered_query);
 PHP_FUNCTION(sqlite_array_query);
 PHP_FUNCTION(sqlite_single_query);
index 8f77c2770b8679016c2c69a1d0259599a9f99713..83c84e4a86772a2d2a93b58a5b2712166ac2cbd8 100644 (file)
@@ -157,6 +157,7 @@ function_entry sqlite_functions[] = {
        PHP_FE(sqlite_popen, third_arg_force_ref)
        PHP_FE(sqlite_close, NULL)
        PHP_FE(sqlite_query, NULL)
+       PHP_FE(sqlite_exec, NULL)
        PHP_FE(sqlite_array_query, NULL)
        PHP_FE(sqlite_single_query, NULL)
        PHP_FE(sqlite_fetch_array, NULL)
@@ -198,6 +199,7 @@ function_entry sqlite_funcs_db[] = {
        PHP_ME_MAPPING(__construct, sqlite_open, NULL)
 /*     PHP_ME_MAPPING(close, sqlite_close, NULL)*/
        PHP_ME_MAPPING(query, sqlite_query, NULL)
+       PHP_ME_MAPPING(queryExec, sqlite_exec, NULL)
        PHP_ME_MAPPING(arrayQuery, sqlite_array_query, NULL)
        PHP_ME_MAPPING(singleQuery, sqlite_single_query, NULL)
        PHP_ME_MAPPING(unbufferedQuery, sqlite_unbuffered_query, NULL)
@@ -1676,6 +1678,45 @@ PHP_FUNCTION(sqlite_query)
 }
 /* }}} */
 
+/* {{{ proto boolean sqlite_exec(string query, resource db)
+   Executes a result-less query against a given database */
+PHP_FUNCTION(sqlite_exec)
+{
+       zval *zdb;
+       struct php_sqlite_db *db;
+       char *sql;
+       long sql_len;
+       char *errtext = NULL;
+       zval *object = getThis();
+
+       if (object) {
+               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &sql, &sql_len)) {
+                       return;
+               }
+               DB_FROM_OBJECT(db, object);
+       } else {
+               if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
+                       ZEND_NUM_ARGS() TSRMLS_CC, "sr", &sql, &sql_len, &zdb) && 
+                  FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &zdb, &sql, &sql_len)) {
+                       return;
+               }
+               DB_FROM_ZVAL(db, &zdb);
+       }
+       
+       PHP_SQLITE_EMPTY_QUERY;
+
+       db->last_err_code = sqlite_exec(db->db, sql, NULL, NULL, &errtext);
+
+       if (db->last_err_code != SQLITE_OK) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
+               sqlite_freemem(errtext);
+               RETURN_FALSE;
+       }
+
+       RETURN_TRUE;
+}
+/* }}} */
+
 /* {{{ php_sqlite_fetch_array */
 static void php_sqlite_fetch_array(struct php_sqlite_result *res, int mode, zend_bool decode_binary, int move_next, zval *return_value TSRMLS_DC)
 {