2012-04-07 23 views
1

我正在用它來處理PHP。如何使用兩個以上的「WHERE」子句? MYSQL錯誤

錯誤: -

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

編輯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']; 
} 

編輯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

你逃避值這些字符串值? – safrazik 2012-04-07 10:45:41

+0

什麼錯誤代碼顯示? – 2012-04-07 10:46:38

+0

WHERE條款可以嗎? – 2012-04-07 10:47:39

回答

2

你應該把字符串放在單引號內。並確保你已經越獄使用mysql_real_escape_string()或類似功能的

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 

更新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

我已經定義了一個函數來處理'mysql_real_escape_string()'所以我完成了它.. – 2012-04-07 10:54:51

+0

單引號呢?例如:'pd_model_type ='%s'' – safrazik 2012-04-07 10:55:35

+0

我有一個函數來處理它...所以它不是問題... – 2012-04-07 10:58:35

0

能否請你加個e「呈現」查詢?您的參數是否應該在引號中設置的「%s」中設置?順便說一句:你不必在完全「AND」連接的WHERE語句中設置圓括號。

+0

好吧,所以它必須是這樣的: - 'WHERE pd_model_type =%s AND pd_model_name =%s AND pd_model_version =%s AND pd_model_group =%s' – 2012-04-07 10:48:43

+0

right。什麼是你的命令來填補你的SQL查詢?你能發送一個具體的查詢,它是如何由你的PHP生成的? PS:它可能會幫助你,沿着多行寫你的SQL查詢,以得到一個更好的主意**其中**在你的查詢中進行調試。 「線1」作爲越野車位置還不是很有幫助。 ;) 一定要用引號設置字符串。例如: @ WHERE pd_model_type ='ps3'AND pd_model_name ='slim'AND pd_model_version ='2.0b'AND pd_model_group ='entertainment'' – loybert 2012-04-07 10:53:14

+0

@AhhilashShukla - 不,這不是'呈現'查詢。呈現的查詢是您綁定/替換參數值後的樣子。 – halfer 2012-04-07 10:53:16

0

這裏是正確的查詢

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 

編輯

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 

對不起,我忘了附上類似情況在括號和我失蹤了一樣,因爲我們在這裏使用通配符

+0

帶或不帶括號,兩者相同 – safrazik 2012-04-07 10:50:02

+0

這與OP的查詢相同,不是嗎? – halfer 2012-04-07 10:51:04