scottmac                Fri Mar  7 17:02:48 2008 UTC

  Modified files:              
    /php-src/ext/pdo_sqlite     sqlite_statement.c 
  Log:
  MFB:
  Fixed bug #41135 (When binding as binary data use sqlite3_bind_blob() to stop 
errors with null bytes.)
  Fixed bug #42443 (Bind integers and booleans as integers rather than strings.)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/sqlite_statement.c?r1=1.24&r2=1.25&diff_format=u
Index: php-src/ext/pdo_sqlite/sqlite_statement.c
diff -u php-src/ext/pdo_sqlite/sqlite_statement.c:1.24 
php-src/ext/pdo_sqlite/sqlite_statement.c:1.25
--- php-src/ext/pdo_sqlite/sqlite_statement.c:1.24      Mon Dec 31 07:12:13 2007
+++ php-src/ext/pdo_sqlite/sqlite_statement.c   Fri Mar  7 17:02:48 2008
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: sqlite_statement.c,v 1.24 2007/12/31 07:12:13 sebastian Exp $ */
+/* $Id: sqlite_statement.c,v 1.25 2008/03/07 17:02:48 scottmac Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -103,13 +103,28 @@
                                                }
                                                pdo_sqlite_error_stmt(stmt);
                                                return 0;
-                                       
+
+                                       case PDO_PARAM_INT:
+                                       case PDO_PARAM_BOOL:
+                                               if (Z_TYPE_P(param->parameter) 
== IS_NULL) {
+                                                       if 
(sqlite3_bind_null(S->stmt, param->paramno + 1) == SQLITE_OK) {
+                                                               return 1;
+                                                       }
+                                               } else {
+                                                       
convert_to_long(param->parameter);
+                                                       if (SQLITE_OK == 
sqlite3_bind_int(S->stmt, param->paramno + 1, Z_LVAL_P(param->parameter))) {
+                                                               return 1;
+                                                       }
+                                               }
+                                               pdo_sqlite_error_stmt(stmt);
+                                               return 0;                       
                
+       
                                        case PDO_PARAM_LOB:
                                                if (Z_TYPE_P(param->parameter) 
== IS_RESOURCE) {
                                                        php_stream *stm;
                                                        
php_stream_from_zval_no_verify(stm, &param->parameter);
                                                        if (stm) {
-                                                               
SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
+                                                               
SEPARATE_ZVAL(&param->parameter);
                                                                
Z_TYPE_P(param->parameter) = IS_STRING;
                                                                
Z_STRLEN_P(param->parameter) = php_stream_copy_to_mem(stm,
                                                                        
&Z_STRVAL_P(param->parameter), PHP_STREAM_COPY_ALL, 0);
@@ -117,9 +132,25 @@
                                                                
pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource" 
TSRMLS_CC);
                                                                return 0;
                                                        }
+                                               } else if 
(Z_TYPE_P(param->parameter) == IS_NULL) {
+                                                       if 
(sqlite3_bind_null(S->stmt, param->paramno + 1) == SQLITE_OK) {
+                                                               return 1;
+                                                       }
+                                                       
pdo_sqlite_error_stmt(stmt);
+                                                       return 0;
+                                               } else {
+                                                       
convert_to_string(param->parameter);
                                                }
-                                               /* fall through */
-               
+                                               
+                                               if (SQLITE_OK == 
sqlite3_bind_blob(S->stmt, param->paramno + 1,
+                                                               
Z_STRVAL_P(param->parameter),
+                                                               
Z_STRLEN_P(param->parameter),
+                                                               SQLITE_STATIC)) 
{
+                                                       return 1;       
+                                               }
+                                               pdo_sqlite_error_stmt(stmt);
+                                               return 0;
+
                                        case PDO_PARAM_STR:
                                        default:
                                                if (Z_TYPE_P(param->parameter) 
== IS_NULL) {



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to