2012-04-07 12 views
1

Ich benutze es mit PHP zu tun.Wie verwendet man mehr als zwei "WHERE" -Klausel? MYSQL ERROR

ERROR: -

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

EDIT 1:

$SQLQUERY = sprintf("SELECT pd_serial FROM product_details WHERE pd_model_type=%s AND pd_model_name=%s AND pd_model_version=%s AND pd_product_group=%s LIMIT 1", 
GetSQLValueString($modeltype, "text"), 
GetSQLValueString($modelname, "text"), 
GetSQLValueString($modelversion, "text"), 
GetSQLValueString($modelgroup, "text")); 
$QUERYEXEC = mysql_query($SQLQUERY, $dacreint) or die("OOPS! Please try again."); 

while ($QUERYFETCH = mysql_fetch_array($QUERYEXEC)) 
{ 
    $pdserial = $QUERYFETCH['pd_serial']; 
} 

EDIT 2:

while ($QUERYFETCH = mysql_fetch_array($QUERYEXEC)) 
{ 
    $pdserial = $QUERYFETCH['pd_serial']; 
} 
$SQLQUERY = sprintf("SELECT product_serial_no FROM products WHERE product_serial_no = '$product_serial_no'"); 
$TCcount_QE = mysql_query($SQLQUERY, $dacreint) or die(mysql_error()); 
+0

Sie entkommen Sie die Werte entkommen? – safrazik

+0

Welcher Fehlercode wird angezeigt? –

+0

Ist die WHERE-Klausel ok? –

Antwort

2

sollte Strings in einfache Anführungszeichen setzen. Und stellen Sie sicher, dass Sie diese Zeichenfolge Werte mit mysql_real_escape_string() oder eine ähnliche Funktion

SELECT pd_serial FROM product_details WHERE (pd_model_type='%s' AND pd_model_name='%s') AND (pd_model_version='%s' AND pd_model_group='%s') LIMIT 1 

UPDATE 1

  while ($QUERYFETCH = mysql_fetch_array($QUERYEXEC)) 
      { 
       $pdserial = $QUERYFETCH['pd_serial']; 
      } 
    // let's comment out the following line 
     // $SQLQUERY = sprintf("SELECT product_serial_no FROM products WHERE product_serial_no = '$product_serial_no'"); 
// and modifying it as: 
      $SQLQUERY = sprintf("SELECT product_serial_no FROM products WHERE product_serial_no = %s", GetSQLValueString($product_serial_no, "text")); 
      $TCcount_QE = mysql_query($SQLQUERY, $dacreint) or die(mysql_error()); 
+0

Ich habe bereits eine Funktion definiert, um 'mysql_real_escape_string()' zu handhaben, also bin ich damit fertig. –

+0

was ist mit den einfachen Anführungszeichen? z. B .: 'pd_model_type = '% s'' – safrazik

+0

Ich habe eine Funktion, damit umzugehen ... So ist es nicht das Problem ... –

0

Könnten Sie bitte hinzufügen th e "gerenderte" Abfrage? Sind deine Parameter, die in "% s" gesetzt werden sollen, in Anführungszeichen gesetzt?

Übrigens: Sie müssen die Klammern nicht innerhalb einer vollständig UND-verknüpften WHERE-Anweisung setzen. Sie befinden sich hier

+0

ok so muss es in etwa so aussehen: - 'WHERE pd_model_type =% s UND pd_model_name =% s UND pd_model_version =% s AND pd_model_group =% s' –

+0

richtig. Was ist Ihr Befehl, um Ihre SQL-Abfrage zu füllen? Könnten Sie eine konkrete Anfrage senden, wie es von Ihrem PHP generiert wird? PS: es könnte Ihnen helfen, Ihre SQL-Queries entlang mehrerer Zeilen zu schreiben, um eine bessere Idee zu bekommen ** wo ** in Ihrer Abfrage zu debuggen. "Linie 1" als Buggy-Position ist noch nicht ganz hilfreich. ;) Achten Sie darauf, Strings mit Anführungszeichen zu setzen. Beispiel: 'WHERE pd_model_type = 'ps3' UND pd_model_name = 'slim' UND pd_model_version = '2.0b' UND pd_model_group = 'entertainment'' – loybert

+0

@AbhilashShukla - nein, das ist nicht die' gerenderte 'Abfrage. Die gerenderte Abfrage entspricht dem Aussehen nach dem Binden/Ersetzen der Parameterwerte. – halfer

0

ist die korrekte Abfrage

SELECT pd_serial FROM product_details WHERE pd_model_type=%s AND pd_model_name=%s AND pd_model_version=%s AND pd_model_group=%s LIMIT 1 

Herausgegeben

SELECT pd_serial FROM product_details WHERE pd_model_type like '%s' AND pd_model_name like '%s' AND pd_model_version like '%s' AND pd_model_group like '%s' LIMIT 1 

Leider i in Klammern wie Zustand zu umschließen vergessen und ich fehlte wie denn wir sind mit Wild Card hier

+0

mit oder ohne Klammern, beide sind gleich – safrazik

+0

Das ist das Gleiche wie die OP-Abfrage, nicht wahr? – halfer

Verwandte Themen