c++ - linux c/c++ - 奇怪的 if/else 问题

标签 c++ mysql c linux

我正在查询一个 mysql 表,然后循环遍历结果。

其中一个字段的值为“0”,所以当我尝试以下操作时它不起作用!

while ((row2 = mysql_fetch_row(resultset2)) != NULL) {
    if (row2[2] != "0") {
        // the field has a value of 0, but it's still executing the code here!
    } else {
        // should be executing this code
    }
}

我知道 C/C++ 在涉及变量时非常严格(取消链接 php),但我无法弄清楚这一点。任何人有任何想法为什么?

最佳答案

你正在比较 row2[2],一个指向 char 的指针,和一个指向常量 char 数组 的指针” 0"

使用strcmp(row2[2], "0") != 0(C方案),std::string(row2[2]) != "0"(C++ 解决方案),或者 atoi(row2[2]) != 0 如果您知道 row2[2] 始终是整数的字符串表示形式(并且不能是一个 SQL NULL 值)。

关于c++ - linux c/c++ - 奇怪的 if/else 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408733/

相关文章:

c++ - QLabel & QComboBox setFont 不起作用

c++ - 拉普拉斯过滤器非常暗。几乎不起作用

c++ - 如何将 C++ 程序与 HTML 页面链接起来?

c - 指向数组的变量的地址与该变量本身的值之间的差异

c - C 中的哈希表插入/搜索

c++ - std::system 实例化单例对象时出现异常

c++ - 如何将当前替代类型的 std::variant 传递给可调用对象?

php - 登录后如何访问特定的mysql数据行和列?

mysql - 无法在 Windows 10 中使用命令提示符访问 MySQL

mysql - 预设值为="999"的输入标签插入MYSQL数据库失败