首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL/C++连接器mysql_real_escape_string函数

问MySQL/C++连接器mysql_real_escape_string函数
EN

Stack Overflow用户
提问于 2013-08-22 10:37:16
回答 1查看 3K关注 0票数 1

我想使用mysql_real_escape_string来处理撇号、反斜杠等。我搜索并找到了这个函数。

代码语言:javascript
复制
unsigned long mysql_real_escape_string(MYSQL *mysql, 
     char *to, const char *from, unsigned long length)

但是这需要MYSQL *,但是我使用下面的代码来连接:

代码语言:javascript
复制
        sql::Driver *driver;
        sql::Connection *con;
        sql::Statement *stmt;


        // Create a connection
        driver = get_driver_instance();
        con = driver->connect("tcp://127.0.0.1:3306", "root", "anubha");
        con->setSchema("db");
        stmt = con->createStatement(); 

因此,如果我没有MYSQL *mysql对象,这是函数所需要的。如果我有这样的联系:

代码语言:javascript
复制
         MYSQL* conn = mysql_init(NULL);
          mysql_real_connect(conn,"tcp://127.0.0.1:3306", "root", 
          "anubha", "db" ,0,NULL,0);

然后,由于我有MYSQL* object,所以我可以使用这个函数,但是是否应该更改连接代码来使用这个函数。没有其他可用的功能吗?另外,这两种连接方式之间的区别是什么,是C与C++ mysql连接器api的区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 10:42:50

您可能希望在C++连接器中使用准备好的查询:

代码语言:javascript
复制
sql::Connection *con;
sql::PreparedStatement  *prep_stmt
// ...

prep_stmt = con->prepareStatement("INSERT INTO test(id, label) VALUES (?, ?)");

prep_stmt->setInt(1, 1);
prep_stmt->setString(2, "a");
prep_stmt->execute();

prep_stmt->setInt(1, 2);
prep_stmt->setString(2, "b");
prep_stmt->execute();

delete prep_stmt;
delete con;

http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-prepared-statements.html

而且,是的,mysql_real_*是C连接器API的一部分,这是唯一的区别。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18378124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档