の特定のフィールド値を確認しようとしていifます。これらの値のほとんどはNULLMySQL にあります。
全てを台無しにしているそうです。
そうです
while ((row = mysql_fetch_row(res)) !=NULL){
if(row[1] != "-1"){
rows.push_back(row[0]);
}
}
のフィールドrow[1]は、、、またはINT LENGTH 1に等しいです。ほとんどはですが、一部はです。すべての値を次のように出力すると思います(少なくとも、これまでに機能させることができた唯一の方法です)。1-1NULLNULL-1mysql.hchar*
とにかく、妙にrows満たされますが、「無」で満たされています。それが空の文字列なのか、それとも何なのかさえわかりません。
助けてください。
よろしくお願いします!
ループの前後にダッシュを入れstd::coutましrows[i]た。大量のsforを出力します。--
std::coutraw の場合、正常にrow[0]出力されます。
私たちのために2012:
std::vector< char* > rows;
while ((row = mysql_fetch_row(res)) !=NULL){
std::cout << "-" << row[0] << "-" << std::endl;
if(row[1] != "-1"){
rows.push_back(row[0]);
}
}
std::cout << "Valids:" << std::endl;
for(int i = 0; i < rows.size(); ++i)
{
std::cout << "id: -" << rows[i] << "-" << std::endl;
}
これを使うと
if(row[1] && row[1] != "-1")
if逆に動作します。
注: の をインクリメントし、intとwhileとをcout編集しました。カウンタは、、およびを与えます。rowsinvalidRows389rows.size() 2invalidRows.size() 387
やってからできるか見てみようcout row[0] かなif…
cout正しいデータを出力したrow[0]後。if
if(row[1] != "-1")与える...forbids comparison between pointer and integer...
理由mysql.h:
CentOS。私はそれについてほとんど何も見つけられず、ホストがサポートするものは何もありません。
if(row[1] && std::string(row[1]).compare("-1") != 0)すべてを入れるinvalidRows
なしrow[] && gavewhat(): basic_string::_S_construct NULL 無効 中止`
答え
それはif(row[1] && std::string(row[1]).compare("-1") == 0)ずっとでした!私のロジックは、すべての C++ クラッシュ コースでめちゃくちゃになりました。
そして使用std::vector< std::string >するrow[x]と、pushedにすることができます_back。