の特定のフィールド値を確認しようとしていif
ます。これらの値のほとんどはNULL
MySQL にあります。
全てを台無しにしているそうです。
そうです
while ((row = mysql_fetch_row(res)) !=NULL){
if(row[1] != "-1"){
rows.push_back(row[0]);
}
}
のフィールドrow[1]
は、、、またはINT
LENGTH
1
に等しいです。ほとんどはですが、一部はです。すべての値を次のように出力すると思います(少なくとも、これまでに機能させることができた唯一の方法です)。1
-1
NULL
NULL
-1
mysql.h
char*
とにかく、妙にrows
満たされますが、「無」で満たされています。それが空の文字列なのか、それとも何なのかさえわかりません。
助けてください。
よろしくお願いします!
ループの前後にダッシュを入れstd::cout
ましrows[i]
た。大量のsfor
を出力します。--
std::cout
raw の場合、正常に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
編集しました。カウンタは、、およびを与えます。rows
invalidRows
389
rows.size()
2
invalidRows.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[
] && gave
what(): basic_string::_S_construct NULL 無効 中止`
答え
それはif(row[1] && std::string(row[1]).compare("-1") == 0)
ずっとでした!私のロジックは、すべての C++ クラッシュ コースでめちゃくちゃになりました。
そして使用std::vector< std::string >
するrow[x]
と、push
edにすることができます_back
。