#endif
#include <php.h>
-
+#include <ext/date/php_date.h>
#include <libpq/libpq-fs.h>
#include "php_pq.h"
params = (char ***) va_arg(argv, char ***);
zdtor = (HashTable *) va_arg(argv, HashTable *);
- if (Z_TYPE_PP(zparam) == IS_NULL) {
+ switch (Z_TYPE_PP(zparam)) {
+ case IS_NULL:
**params = NULL;
++*params;
- } else {
- if (Z_TYPE_PP(zparam) != IS_STRING) {
- convert_to_string_ex(zparam);
- }
+ break;
+
+ case IS_BOOL:
+ **params = Z_BVAL_PP(zparam) ? "t" : "f";
+ ++*params;
+ break;
+ case IS_DOUBLE:
+ SEPARATE_ZVAL(zparam);
+ Z_TYPE_PP(zparam) = IS_STRING;
+ Z_STRLEN_PP(zparam) = spprintf(&Z_STRVAL_PP(zparam), 0, "%F", Z_DVAL_PP((zval **)p));
+ /* no break */
+
+ default:
+ convert_to_string_ex(zparam);
+ /* no break */
+
+ case IS_STRING:
**params = Z_STRVAL_PP(zparam);
++*params;
if (*zparam != *(zval **)p) {
zend_hash_next_index_insert(zdtor, zparam, sizeof(zval *), NULL);
}
+ break;
}
+
return ZEND_HASH_APPLY_KEEP;
}
}
*/
+zval *php_pq_date_from_string(char *datetime_str, size_t datetime_len, zval *zv TSRMLS_DC)
+{
+ php_date_obj *dobj;
+
+ if (!zv) {
+ MAKE_STD_ZVAL(zv);
+ }
+
+ php_date_instantiate(php_date_get_date_ce(), zv TSRMLS_CC);
+ dobj = zend_object_store_get_object(zv TSRMLS_CC);
+ if (!php_date_initialize(dobj, datetime_str, datetime_len, NULL, NULL, 1 TSRMLS_CC)) {
+ zval_dtor(zv);
+ ZVAL_NULL(zv);
+ }
+
+ return zv;
+}
+
/*
* Local variables:
* tab-width: 4