@@ -1041,51 +1041,38 @@ PHP_FUNCTION(mysqli_stmt_construct)
1041
1041
zval * mysql_link ;
1042
1042
MY_STMT * stmt ;
1043
1043
MYSQLI_RESOURCE * mysqli_resource ;
1044
- char * statement ;
1044
+ char * statement = NULL ;
1045
1045
size_t statement_len ;
1046
1046
1047
- switch (ZEND_NUM_ARGS ())
1048
- {
1049
- case 1 : /* mysql_stmt_init */
1050
- if (zend_parse_parameters (1 , "O" , & mysql_link , mysqli_link_class_entry )== FAILURE ) {
1051
- return ;
1052
- }
1053
- MYSQLI_FETCH_RESOURCE_CONN (mysql , mysql_link , MYSQLI_STATUS_VALID );
1054
-
1055
- stmt = (MY_STMT * )ecalloc (1 ,sizeof (MY_STMT ));
1056
-
1057
- stmt -> stmt = mysql_stmt_init (mysql -> mysql );
1058
- break ;
1059
- case 2 :
1060
- if (zend_parse_parameters (2 , "Os" , & mysql_link , mysqli_link_class_entry , & statement , & statement_len )== FAILURE ) {
1061
- return ;
1062
- }
1063
- MYSQLI_FETCH_RESOURCE_CONN (mysql , mysql_link , MYSQLI_STATUS_VALID );
1064
-
1065
- stmt = (MY_STMT * )ecalloc (1 ,sizeof (MY_STMT ));
1066
-
1067
- if ((stmt -> stmt = mysql_stmt_init (mysql -> mysql ))) {
1068
- mysql_stmt_prepare (stmt -> stmt , (char * )statement , statement_len );
1069
- }
1070
- break ;
1071
- default :
1072
- WRONG_PARAM_COUNT ;
1073
- break ;
1047
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "O|s!" , & mysql_link , mysqli_link_class_entry , & statement , & statement_len ) == FAILURE ) {
1048
+ return ;
1074
1049
}
1050
+ MYSQLI_FETCH_RESOURCE_CONN (mysql , mysql_link , MYSQLI_STATUS_VALID );
1075
1051
1076
- if (!stmt -> stmt ) {
1052
+ stmt = (MY_STMT * ) ecalloc (1 , sizeof (MY_STMT ));
1053
+
1054
+ if (!(stmt -> stmt = mysql_stmt_init (mysql -> mysql ))) {
1077
1055
efree (stmt );
1078
1056
RETURN_FALSE ;
1079
1057
}
1058
+
1080
1059
#ifndef MYSQLI_USE_MYSQLND
1081
1060
ZVAL_COPY (& stmt -> link_handle , mysql_link );
1082
1061
#endif
1083
1062
1084
1063
mysqli_resource = (MYSQLI_RESOURCE * )ecalloc (1 , sizeof (MYSQLI_RESOURCE ));
1085
1064
mysqli_resource -> ptr = (void * )stmt ;
1086
- mysqli_resource -> status = ( ZEND_NUM_ARGS () == 1 ) ? MYSQLI_STATUS_INITIALIZED : MYSQLI_STATUS_VALID ;
1065
+ mysqli_resource -> status = MYSQLI_STATUS_INITIALIZED ;
1087
1066
1088
1067
MYSQLI_REGISTER_RESOURCE_EX (mysqli_resource , getThis ());
1068
+
1069
+ if (statement ) {
1070
+ if (mysql_stmt_prepare (stmt -> stmt , statement , statement_len )) {
1071
+ MYSQLI_REPORT_STMT_ERROR (stmt -> stmt );
1072
+ RETURN_FALSE ;
1073
+ }
1074
+ mysqli_resource -> status = MYSQLI_STATUS_VALID ;
1075
+ }
1089
1076
}
1090
1077
/* }}} */
1091
1078
0 commit comments