/* tell the driver we just created a parameter */
if (stmt->methods->param_hook) {
- return stmt->methods->param_hook(stmt, pparam, PDO_PARAM_EVT_ALLOC TSRMLS_CC);
+ if (!stmt->methods->param_hook(stmt, pparam,
+ PDO_PARAM_EVT_ALLOC TSRMLS_CC)) {
+ /* driver indicates that the parameter doesn't exist.
+ * remove it from our hash */
+ if (pparam->name) {
+ zend_hash_del(hash, pparam->name, pparam->namelen);
+ } else {
+ zend_hash_index_del(hash, pparam->paramno);
+ }
+ return 0;
+ }
}
return 1;