if (dbh->methods->fetch_err(dbh, stmt, &info)) {
zval *item;
- if ((item = zend_hash_index_find(Z_ARRVAL(info), 1)) != NULL) {
+ if ((item = zend_hash_index_find(Z_ARRVAL(info), 1)) != NULL
+ && Z_TYPE_P(item) == IS_LONG) {
native_code = Z_LVAL_P(item);
}
}
}
- if (supp) {
+ if (native_code && supp) {
message = strpprintf(0, "SQLSTATE[%s]: %s: " ZEND_LONG_FMT " %s", *pdo_err, msg, native_code, supp);
+ } else if (supp) {
+ message = strpprintf(0, "SQLSTATE[%s]: %s: %s", *pdo_err, msg, supp);
} else {
message = strpprintf(0, "SQLSTATE[%s]: %s", *pdo_err, msg);
}
if (einfo->errcode) {
add_next_index_long(info, einfo->errcode);
+ } else {
+ add_next_index_null(info);
+ }
+ if (einfo->errmsg) {
add_next_index_string(info, einfo->errmsg);
}
ZEND_ATOL(param->paramno, namevar + 1);
param->paramno--;
} else {
- pdo_pgsql_error_stmt_msg(
- stmt, PGRES_FATAL_ERROR, "HY093", ZSTR_VAL(param->name));
+ pdo_pgsql_error_stmt_msg(stmt, 0, "HY093", ZSTR_VAL(param->name));
return 0;
}
}
return 1;
}
if (!zend_hash_index_exists(stmt->bound_param_map, param->paramno)) {
- pdo_pgsql_error_stmt_msg(
- stmt, PGRES_FATAL_ERROR, "HY093", "parameter was not defined");
+ pdo_pgsql_error_stmt_msg(stmt, 0, "HY093", "parameter was not defined");
return 0;
}
case PDO_PARAM_EVT_EXEC_POST:
echo "Done\n";
?>
--EXPECTF--
-Warning: PDOStatement::bindValue(): SQLSTATE[HY093]: Invalid parameter number: 7 :test in %s on line %d
+Warning: PDOStatement::bindValue(): SQLSTATE[HY093]: Invalid parameter number: :test in %s on line %d
bool(false)
Done
?>
--EXPECT--
-SQLSTATE[HY093]: Invalid parameter number: 7 parameter was not defined
+SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
?>
--EXPECTF--
-Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: 7 parameter was not defined in %s on line %d
+Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in %s on line %d