Wykorzystanie zmiennej w zapytaniach

0

Witam,
Mam problem z użyciem zmiennej w zapytaniach. A mianowicie nie wiem jaką metodą mam używać zmiennej.
Aby znaleźć coś po nazwie w bazie próbowałem w ten sposób:

   mysql_query(conn,"SELECT FROM lokale WHERE nazwa LIKE "+IntToStr(zmienna)+";"); 

	rezultat = mysql_store_result(conn);              //tutaj jest wypisanie wyniku
    while( (wiersz = mysql_fetch_row (rezultat) ))
    {
        wynik = wiersz[1];
        cout << wynik << endl;
    }	
	mysql_close(conn);
 

Niestety "+IntToStr(zmienna)+" nie działa. (a może robię źle coś innego)
Pewna osoba poleciła mi taką metodę:

char query[1024]; 
sprintf(query, "SELECT* FROM lokale WHERE nazwa LIKE %d;", zmienna); 
mysql_query(conn, query);
 

I to też nie wyświetla mi nic. Czy ktoś mógłby mi coś doradzić w sprawie tego problemu?

0

Podaj przykład jakie nazwy chcesz znaleźć.

0

Np. Pobieram wcześniej wartość "Balbina". W bazie danych znajduje się lokal o takiej nazwie, więc zapytanie powinno go zwrócić.

1

I rozumiem że wartość "Balbina" wczytałeś do liczby typu int?

char zmienna[128]="Balbina";
//scanf("%127s",zmienna);
char query[1024]; 
sprintf(query,"SELECT * FROM lokale WHERE nazwa=\"%s\"",zmienna);

Ewentualnie: sprintf(query,"SELECT * FROM lokale WHERE nazwa like \"%s\"","Ba%");
lub: sprintf(query,"SELECT * FROM lokale WHERE nazwa like \"%s\"","%ina");
lub: sprintf(query,"SELECT * FROM lokale WHERE nazwa like \"%s\"","%lbi%");

0

Zmienną pobieram tak jak napisałeś. a po wpisaniu

sprintf(query,"SELECT * FROM lokale WHERE nazwa=\"%s\"",zmienna); 

program się psuje (przestaje działać)

0
 
#include <iostream>
#include <stdlib.h>

using namespace std;

#include <winsock.h>
#include <mysql.h>

int main(int argc, char *argv[])
{
    static char *sql_host="localhost";
    static char *sql_username="root";
    static char *sql_password="";
    static char *sql_db_name="baza_lokalizatora";
    static unsigned int sql_port=0;
    static char *sql_socket=NULL;
    static unsigned int sql_flags=0;
    char *wynik;
    static MYSQL *conn; 
    MYSQL_RES *rezultat;
    MYSQL_ROW wiersz;    
    conn=mysql_init(NULL);
    mysql_real_connect(conn,sql_host,sql_username,sql_password,sql_db_name,sql_port,sql_socket,sql_flags);
    mysql_select_db(conn,"baza_lokalizatora");
    //powyzej lacze sie z baza
    
    char nazwa[128];
    cin >> nazwa;
    
   // char zmienna[128]="Balbina";
  //scanf("%127s",zmienna);
     char query[1024]; 
     sprintf(query,"SELECT * FROM lokale WHERE nazwa=\"%s\"",nazwa);
    
    
        //poniżej wypisanie wyniku (nie jestem pewien czy wyświetli mi cały wynik zapytania)
	rezultat = mysql_store_result(conn);
    while( (wiersz = mysql_fetch_row (rezultat) ))
    {
        wynik = wiersz[1];
        cout << wynik << endl;
    }	
	mysql_close(conn);
	 
    system("PAUSE");	
    return 0;
}

Program łączy się z bazą bo po użyciu

 mysql_query(conn,"SELECT * FROM lokale;");

. Wypisują się dane, które wprowadziłem w phpMyAdmin, więc problem musi leżeć w pobraniu, lub w użyciu zmiennej.

1

A gdzie w powyższym kodzie wysyłasz zapytanie do bazy?
mysql_query(conn,query);

0

Dzięki wielkie, teraz wszystko działa świetnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1