/* bind_result(bind,...) */ static VALUE stmt_bind_result(int argc, VALUE *argv, VALUE obj) { struct mysql_stmt* s = DATA_PTR(obj); int i; MYSQL_FIELD *field; check_stmt_closed(obj); if (argc != s->result.n) rb_raise(eMysql, "bind_result: result value count(%d) != number of argument(%d)", s->result.n, argc); for (i = 0; i < argc; i++) { if (argv[i] == Qnil || argv[i] == rb_cNilClass) { field = mysql_fetch_fields(s->res); s->result.bind[i].buffer_type = field[i].type; } else if (argv[i] == rb_cString) s->result.bind[i].buffer_type = MYSQL_TYPE_STRING; else if (argv[i] == rb_cNumeric || argv[i] == rb_cInteger || argv[i] == rb_cFixnum) s->result.bind[i].buffer_type = MYSQL_TYPE_LONGLONG; else if (argv[i] == rb_cFloat) s->result.bind[i].buffer_type = MYSQL_TYPE_DOUBLE; else if (argv[i] == cMysqlTime) s->result.bind[i].buffer_type = MYSQL_TYPE_DATETIME; else rb_raise(rb_eTypeError, "unrecognized class: %s", RSTRING_PTR(rb_inspect(argv[i]))); if (mysql_stmt_bind_result(s->stmt, s->result.bind)) mysql_stmt_raise(s->stmt); } return obj; }