gpt4 book ai didi

c++ - 我的程序从数据库中读取 0,即使有 1

转载 作者:行者123 更新时间:2023-11-28 01:38:47 26 4
gpt4 key购买 nike

我不明白代码有什么问题,我看了很多遍都找不到错误

pstmt = con->prepareStatement("SELECT (?) FROM votos WHERE id = (?)");
pstmt->setString(1, eleccion);
pstmt->setInt(2, p->getId());
res = pstmt->executeQuery();
while(res->next())
{
p->setVoto(res->getInt(1));
}

eleccionid 变量分别为 Provincial1 时,getInt(1) 函数应该返回1,但它返回 0。

命令(在mysql命令行中):

SELECT Provincial from Votos WHERE id=1

返回一个表格,其中一行一列的值为 1

旁注:

检查了拼写

getId() 函数正常工作

编译器没有报错

最佳答案

您不能在准备好的列名查询中使用占位符。它返回字符串 eleccion 的值,而不是将其用作表中列的名称。您需要进行字符串连接以替换列名。

std::string sql = std::string("SELECT `") + eleccion + "` FROM votos WHERE id = ?";
pstmt = con->prepareStatement(sql.c_str());
pstmt->setInt(1, p->getId());
res = pstmt->executeQuery();
while(res->next())
{
p->setVoto(res->getInt(1));
}

如果 eleccion 的值来自用户或其他一些不受信任的来源,请确保在连接之前对其进行验证,以防止 SQL 注入(inject)。

关于c++ - 我的程序从数据库中读取 0,即使有 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48235633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com