C MySQL Prepare是一種將SQL語句和參數分別傳給MySQL進行預處理的技術。
MYSQL_STMT *stmt; MYSQL_BIND bind[2]; stmt = mysql_stmt_init(mysql); mysql_stmt_prepare(stmt, "INSERT INTO student (name, age) VALUES (?, ?)", strlen("INSERT INTO student (name, age) VALUES (?, ?)")); char *name = "張三"; int age = 18; bind[0].buffer_type = MYSQL_TYPE_STRING; bind[0].buffer = (char *)name; bind[0].buffer_length = strlen(name); bind[0].is_null = 0; bind[1].buffer_type = MYSQL_TYPE_LONG; bind[1].buffer = (char *)&age; bind[1].is_null = 0; mysql_stmt_bind_param(stmt, bind); mysql_stmt_execute(stmt); mysql_stmt_close(stmt);
在上面的代碼中,我們使用mysql_stmt_init方法初始化一個MYSQL_STMT對象,并使用mysql_stmt_prepare方法將SQL語句傳給MySQL進行預處理。預處理后,我們可以使用mysql_stmt_bind_param方法將綁定數組中的參數值傳遞給MySQL。最后,我們使用mysql_stmt_execute方法執行該預處理的語句,并使用mysql_stmt_close方法關閉該語句的MYSQL_STMT對象。