我需要将本地图片上传值MySQL数据库,请问代码是怎样的
时间: 2023-04-03 07:01:18 浏览: 90
你可以使用以下代码将本地图片上传到MySQL数据库:
```c
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main(int argc, char **argv) {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "username";
char *password = "password";
char *database = "database_name";
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, , NULL, )) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
FILE *fp;
char *filename = "image.jpg";
fp = fopen(filename, "rb");
if (fp == NULL) {
fprintf(stderr, "Cannot open image file\n");
exit(1);
}
fseek(fp, , SEEK_END);
long file_size = ftell(fp);
fseek(fp, , SEEK_SET);
char *image_data = (char *) malloc(file_size);
if (fread(image_data, file_size, 1, fp) != 1) {
fprintf(stderr, "Cannot read image file\n");
exit(1);
}
fclose(fp);
char *query = "INSERT INTO images (image_data) VALUES (?)";
MYSQL_STMT *stmt = mysql_stmt_init(conn);
if (!stmt) {
fprintf(stderr, "mysql_stmt_init(), out of memory\n");
exit(1);
}
if (mysql_stmt_prepare(stmt, query, strlen(query))) {
fprintf(stderr, "mysql_stmt_prepare(), INSERT failed\n");
fprintf(stderr, "%s\n", mysql_stmt_error(stmt));
exit(1);
}
MYSQL_BIND bind[1];
memset(bind, , sizeof(bind));
bind[].buffer_type = MYSQL_TYPE_LONG_BLOB;
bind[].buffer = image_data;
bind[].buffer_length = file_size;
if (mysql_stmt_bind_param(stmt, bind)) {
fprintf(stderr, "mysql_stmt_bind_param() failed\n");
fprintf(stderr, "%s\n", mysql_stmt_error(stmt));
exit(1);
}
if (mysql_stmt_execute(stmt)) {
fprintf(stderr, "mysql_stmt_execute(), INSERT failed\n");
fprintf(stderr, "%s\n", mysql_stmt_error(stmt));
exit(1);
}
mysql_stmt_close(stmt);
mysql_close(conn);
return ;
}
```
请注意,这只是一个示例代码,你需要根据你的实际情况进行修改。