将包含“`”或“'”的字符串插入数据库表 - Qt

时间:2013-09-27 07:37:40

标签: mysql qt qsqlquery

我必须在MySQL数据库中插入一些字符串。 问题是每次我使用“`”或“'”时都会导致QSqlquery执行错误。 我该如何防止这种情况?

4 个答案:

答案 0 :(得分:4)

在运行查询时始终使用绑定变量,SQL查询中的特殊字符永远不会出现问题。以下是documentation

中的示例
QSqlQuery query;
query.prepare("INSERT INTO person (id, forename, surname) "
              "VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();

答案 1 :(得分:0)

`和'是SQL中的注释,你必须用反斜杠“保护”它们,如此

Select bla
From blo
where name = "some \`test\`"

答案 2 :(得分:0)

您应添加转义序列以添加此类特殊字符,例如'`\"

请在他们面前添加\添加。

e.g。

'使用\'

"使用\"

\使用\\

`使用\`

答案 3 :(得分:-2)

// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
在php中,您可以使用mysql_real_escape_string函数: http://php.net/manual/en/function.mysql-real-escape-string.php

希望能帮到你!