2016-07-21 17 views
-2

Ich bin neu in PHP und MySQL, tut mir leid, wenn ich lahme Frage, aber ich brauche wirklich Hilfe.PHP - MySQL Parameter

Ich habe diesen Code:

$query = sprintf("SELECT name, lat, lng 
    FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", 
    mysql_real_escape_string($center_lat), 
    mysql_real_escape_string($center_lng), 
    mysql_real_escape_string($center_lat), 
    mysql_real_escape_string($radius)); 
$result = mysql_query($query); 

ich wissen muss, was die '% s' ist und wie eine dynamische setzen Wo Zustand (manchmal Cames es null, manchmal mit OR-Bedingungen)

+0

Sie sollten über vorbereitete Stents lernen! – Jens

+0

% s ist ein Platzhalter für eine Zeichenfolge. Google für sprintf und Sie erhalten eine ordnungsgemäße Erklärung – Jens

+0

dynamische Statements können Sie mit wenn sonst in PHP erstellen – Jens

Antwort

0

Sie haben keine Aggregationsfunktion verwenden, so .. Sie verwenden sollten, wo und nicht

die Zeichenfolge für den Druck
"SELECT name, lat, lng 
FROM markers where distance < '%s' ORDER BY distance LIMIT 0 , 20", 

Sie verwenden sprintf mit und Sie passieren% s die Sie nur einen String im Aufruf (die andere par passieren sollte messer sind falsch)

$query = sprintf("SELECT name, lat, lng 
    FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", 
    mysql_real_escape_string($Your_string)); 

Dies ist die Abfrage, die Sie

bereitgestellt
query = sprintf("SELECT name,imagem, lat, lng 
      FROM markers 
      WHERE %2$s HAVING distance < '%1$s' 
      ORDER BY distance LIMIT 0 , 20", 
      mysql_real_escape_string($center_lat), 
      mysql_real_escape_string($center_lng), 
      mysql_real_escape_string($center_lat), 
      mysql_real_escape_string($radius), 
      mysql_real_escape_string($dynamicWhereCondition)); 

Wie ich schon sagte, bevor Sie nicht mit verwenden, haben .. (zu haben ist eine Klausel SQL wird für Filter aggregatio verwendet Funktion, die Sie in Ihrer Abfrage nicht haben)

müssen mehr nicht verwenden dann die vars Sie mit% erklären ... erklären Sie 2 vars aber das Passieren var sind 5

und mehr erklären Sie die Vars in einer Art und Weise denke ich falsch% 1s und 2s% ..

dann beraten Sie i Ihr Wissen über SQL mit den einfacheren Fällen zu vertiefen, was Sie verwenden ..

Ich entschuldige mich, wenn ich dies als Antwort hinzugefügt habe, aber es war zu schwierig, mit einem Kommentar umzugehen

+0

Hallo, die Where-Bedingung funktioniert es nicht. –

+0

Was meinst du mit "funktioniert nicht." hast du einen Fehler? oder respektieren Sie die realen Daten in Ihrem db get falsches Ergebnis? .. – scaisEdge

+0

Es gibt keine Ergebnisse zurück .. Ich lese bereits einige Dinge über das Sprintf, ich brauche 2 Params die zweite ist eine dynamische Where Bedingung und immer noch nicht funktioniert .. $ query = sprintf ("SELECT name, image, lat, lng FROM Marker WHERE% 2 $ s HAVING Abstand <'% 1 $ s' ORDER BY Abstand LIMIT 0, 20 ", mysql_real_escape_string ($ center_lat), mysql_real_escape_string ($ center_lng), mysql_real_escape_string ($ center_lat) , mysql_real_escape_string ($ radius), mysql_real_escape_string ($ dynamicWhereCondition)); –