Ich hatte eine Frage, wenn es um die Arbeit mit MySql in C++ geht.MySql eingebettet in C++
Es ist wahrscheinlich etwas klein, dass ich übersehe, aber innerhalb meiner ersten while
Schleife, rowFlight[0]
hält, was ist die Flugnummer (Nummer zwischen 1-5).
Ich versuche, dass innerhalb meiner zweiten Abfrage zu verwenden mysql_query(connection ,"SELECT firstName, lastName FROM passenger, manifest, flight WHERE passenger.passnum = manifest.passnum AND manifest.flightnum = flight.flightnum AND flight.flightnum = '*rowFlight[0]';");
Aber nichts wird zurückgegeben. Wenn ich mysql_num_rows
nach der Abfrage verwenden, um anzuzeigen, wie viele Zeilen zurückgegeben wurden, wird 0 angezeigt, aber wenn ich einen Wert in der Abfrage (zwischen 1 und 5) hart Code statt *rowFlight[0]
codiere, bekomme ich Zeilen, die zurückgegeben werden (die Zeilen Ich erwarte zu sehen).
Was ist der richtige Weg, um das Ergebnis einer Abfrage in einem anderen zu verwenden?
#include <iostream>
#include <iomanip>
#include <mysql.h>
using std::cout; using std::cerr;
using std::setw; using std::endl;
int main() {
MYSQL *connection, mysql;
connection = mysql_init(&mysql); //initialize instance
connection = mysql_real_connect(connection, SERVER, USER, PASSWORD, DATABASE, 0, NULL, 0);
if(connection) { //if connected successfully
MYSQL_RES *returnValFlight; //pointer to receive the return value
MYSQL_ROW rowFlight; //variable for rows
mysql_query(connection ,"SELECT * FROM flight;"); //Pull all the flights (flightnum, origination, destination, miles)
returnValFlight = mysql_store_result(connection); //returnVal is a temporary file for the results of the query, a cursor
MYSQL_RES *returnValPassenger; //pointer to receive the return value
MYSQL_ROW rowPassenger; //variable for rows
cout << endl
<< "Flight Number: Flight Origination: Flight Destination: Miles:" << endl
<< "--------------------------------------------------------------------------" << endl;
while ((rowFlight = mysql_fetch_row(returnValFlight)) != NULL) { //while not end of the cursor
cout << rowFlight[0] << rowFlight[1] << rowFlight[2] << rowFlight[3] << endl; //print flight info
mysql_query(connection ,"SELECT firstName, lastName FROM passenger, manifest, flight WHERE passenger.passnum = manifest.passnum AND manifest.flightnum = flight.flightnum AND flight.flightnum = '*rowFlight[0]';"); //query
returnValPassenger = mysql_store_result(connection); //returnVal is a temporary file for the results of the query, a cursor
while ((rowPassenger = mysql_fetch_row(returnValPassenger)) != NULL) //while not end of the cursor
cout << rowPassenger[0] << " " << rowPassenger[1] << endl; //print passengers on that flight
}
cout << endl;
mysql_free_result(returnValPassenger);
mysql_free_result(returnValFlight);
mysql_close(connection); //close connection
}
else //connection failed
cerr << "Connection Failed!" << endl;
return 0;
}