dbd/mysql/connection.c

changeset 22
fd78e9cdc6e9
parent 14
98192b7d4e89
child 23
a4825c3e65e9
equal deleted inserted replaced
21:7956401a0c5e 22:fd78e9cdc6e9
139 139
140 return 2; 140 return 2;
141 } 141 }
142 142
143 /* 143 /*
144 * quoted = connection:quote(str)
145 */
146 static int connection_quote(lua_State *L) {
147 connection_t *conn = (connection_t *)luaL_checkudata(L, 1, DBD_MYSQL_CONNECTION);
148 size_t len;
149 const char *from = luaL_checklstring(L, 2, &len);
150 char *to = (char *)calloc(len*2+1, sizeof(char));
151 int quoted_len;
152
153 if (!conn->mysql) {
154 luaL_error(L, DBI_ERR_DB_UNAVAILABLE);
155 }
156
157 quoted_len = mysql_real_escape_string(conn->mysql, to, from, len);
158
159 lua_pushlstring(L, to, quoted_len);
160
161 return 1;
162 }
163
164 /*
144 * success = connection:rollback() 165 * success = connection:rollback()
145 */ 166 */
146 static int connection_rollback(lua_State *L) { 167 static int connection_rollback(lua_State *L) {
147 connection_t *conn = (connection_t *)luaL_checkudata(L, 1, DBD_MYSQL_CONNECTION); 168 connection_t *conn = (connection_t *)luaL_checkudata(L, 1, DBD_MYSQL_CONNECTION);
148 int err = 0; 169 int err = 0;
170 {"autocommit", connection_autocommit}, 191 {"autocommit", connection_autocommit},
171 {"close", connection_close}, 192 {"close", connection_close},
172 {"commit", connection_commit}, 193 {"commit", connection_commit},
173 {"ping", connection_ping}, 194 {"ping", connection_ping},
174 {"prepare", connection_prepare}, 195 {"prepare", connection_prepare},
196 {"quote", connection_quote},
175 {"rollback", connection_rollback}, 197 {"rollback", connection_rollback},
176 {NULL, NULL} 198 {NULL, NULL}
177 }; 199 };
178 200
179 static const luaL_Reg connection_class_methods[] = { 201 static const luaL_Reg connection_class_methods[] = {

mercurial