2014-11-24 2 views
-1

안녕하세요, 저는 정말 도움이 필요한 mysql 문제가 있습니다. 업데이트 내 코드 :mysql 업데이트 오류가 발생했습니다. '

$update = mysql_query("UPDATE products SET stock = stock + $quantity WHERE id = $product_id") or die(mysql_error()); 

mysql_error를이 다음 말한다 : 저 정말 sence하게하지 않습니다

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 ' 

. Btw. 모든 변수가 작동합니다.

내 코드를 업데이트해야한다는 것을 알고 있지만 작동해야합니다.

업데이트 :

$update = mysql_query("UPDATE products SET stock = stock + '1' WHERE id = '1'") or die(mysql_error()); 

그 코드는 이제 작동, 그래서 나에게 변수에 대해 뭔가 문자열 인을해야합니다. 어떻게 그들을 int로 만들 수 있습니까, 나는 (int) $ 변수로 시도 했습니까?

답변

0
$update = mysql_query("UPDATE products SET stock = stock". $quantity." WHERE id = ".$product_id) 
1

여기의 문제는 데이터 유형이 일치하지 않습니다. 데이터베이스에서 ID는 Int로 설정됩니다. PHP 코드에서 id는 String으로 설정됩니다. 이 문제는 문자열에있는 경우 $id을 쿼리에 삽입하면 id 값 주위에 작은 따옴표가 추가되므로 문제가 발생합니다. 여기에는 두 가지 옵션이 있습니다 :

  1. PHP 코드에서 id의 데이터 유형을 Int로 변경하십시오. 이것은 시스템 설계 방법에 따라 불가능할 수도 있습니다.
  2. 데이터베이스의 ID 데이터 유형을 Varchar로 변경하십시오. 나는 이것을 추천하지 않는다.
  3. 검색어를 변경하십시오. 변수에 쿼리를 삽입하는 대신 변수를 쿼리에 연결하여이 작업을 수행 할 수 있습니다. 예를 들어 id 변수는 : 제이 블랜차드가 언급 한 바와 같이 "UPDATE products SET stock = stock + $quantity WHERE id = " . $product_id

, 당신은 prepared statements을보고 그것이 문자열이 될 수 있으므로, 양에 INTVAL 사용 PDO 또는 MySQLi

+0

좋아, 방금 쿼리의 모든 변수에 intval ($ variable)을했지만 지금은 오류를 표시하지 않거나 아무것도 업데이트하지 않습니다. –

+0

업데이트 할 부분이 있습니까? 어쩌면'id = 1'이 데이터베이스에 없거나'$ quantity'가 null이고,'stock'에 아무 것도 추가하지 않을 수도 있습니다. –

+0

이봐, 내가 변수를 int로 변경하면'(int) $ variable'이됩니다. 0, 각 변수에. 왜 그게, 그리고 어떻게 해결합니까? –

0

시도를 사용하고한다

$quantity = intval($quantity); 
$update = mysql_query("UPDATE products SET stock = stock + $quantity WHERE id = $product_id") or die(mysql_error()); 
+0

이봐, 방금 intval에 모든 변수를 추가했는데 오류는 보이지 않지만 업데이트가 안된다. –

+0

다른 문제 여야한다. /sqlfiddle.com/#!2/b9969/1 로그를 확인하여 오류 출력을 확인하십시오. – marcostvz

관련 문제