我一直在学习MySQL C API教程,从http://zetcode.com/tutorials/mysqlcapitutorial/开始,下面的示例运行良好:

#include <my_global.h>
#include <mysql.h>

int main(int argc, char **argv)
{

MYSQL *conn;

conn = mysql_init(NULL);
mysql_real_connect(conn, "localhost", "zetcode", "passwd", "testdb", 0, NULL, 0);

mysql_query(conn, "CREATE TABLE writers(name VARCHAR(25))");

mysql_query(conn, "INSERT INTO writers VALUES('Leo Tolstoy')");
mysql_query(conn, "INSERT INTO writers VALUES('Jack London')");
mysql_query(conn, "INSERT INTO writers VALUES('Honore de Balzac')");
mysql_query(conn, "INSERT INTO writers VALUES('Lion Feuchtwanger')");
mysql_query(conn, "INSERT INTO writers VALUES('Emile Zola')");

mysql_close(conn);

}

如何更改代码以接受自定义值而不是硬编码值,是否可以用字符指针或其他东西替换writers和Leo Tolstoy?

最佳答案

你基本上有两个选择:
您可以使用sprintf自己构造查询。然后应该对所有变量使用mysql_real_escape_string,否则代码容易受到SQL注入的攻击。
您可以使用prepared statementsmysql_stmt_execute的文档中有一些示例。(这是更好的选择)

关于mysql - MySQL C API自定义值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1599415/

10-10 16:17