값이

2012-10-30 4 views
0

인 업데이트 값 현재 MYSQL 및 PHP를 접하면서 매우 초기 단계입니다. 누구든지 내가 여기서 잘못하고있는 것을 지적 할 수 있습니까?값이

UPDATE mage_catalog_product_entity_text 
SET value=" . $row['value2'] . " 
WHERE value = " . $row['value']; 

값을 현재 값과 동일한 다른 변수에 값을 설정하려고합니다.

Unknown column 'test' in 'where clause' 

편집 : 그래서 거기에 값 2는 내가 함께 업데이트하고 가치 그냥 "테스트"

내가 오류가 무엇이며이 전체 쿼리를 울리는 것은 내가 게시하기로 결정했습니다, 그래서 같은 오류를 반환 내 하지 "테스트"밤은 전혀 언급되고있는 전체 코드 :

<?php // instead of <? 

mysql_connect ("localhost","cpsdev_mage1","D******"); 
mysql_select_db ("cpsdev_mage1"); 

$sql = "select value from mage_catalog_product_entity_text WHERE Attribute_id = 64"; 
    $result = mysql_query ($sql) or die($myQuery."<br/><br/>".mysql_error()); 

while($row = mysql_fetch_array($result,MYSQL_ASSOC)) 
{ 
$lines = file('/media/dev/' . $row['value']); 
echo "UPDATE mage_catalog_product_entity_text SET value=" . $lines . "WHERE value = '"  . $row['value']; . "'"; 
} 

?> 

내 데이터베이스에있는 행은 다음과 같습니다 은 attribute_id 값 64 데이터 (109) 다른 데이터

편집 :이 해결 - 내 실수

+1

문자열 리터럴 값을 'value'에 할당하려는 경우 문자열 리터럴 값을 따옴표로 묶어야합니다. –

답변

1

SQL에서 문자열 값은 작은 따옴표로 구분됩니다.

는 SQL에서 이런 종류의 영향을하려면

UPDATE mage_catalog_product_entity_text 
    SET value= 'new' 
    WHERE value = 'old' 

을 ...PHP의 경우 :

$sql = "UPDATE mage_catalog_product_entity_text " . 
     " SET value= '" . $row['value2'] . 
     "' WHERE value = '" . $row['value'] . "'"; 

각 절에 두 개의 작은 따옴표를 추가했습니다.

0

오류 메시지가 명확하게 test라는 이름의 이없는 작업하려고하는 해당 테이블을 나타내는 제안 편집에 잘못된 위치에 ftping이었다. 나는 echo()에게 무엇이 진짜로 보이는지보기위한 질문을 제안 할 것입니다. 또한, 쿼리 문자열 값을 인용 할 필요가 같은 잘못된 구문을 사용합니다

WHERE value='" . $row['value'] . "'"; 

또는 더 나은 :

$query = sprintf( "UPDATE `mage_catalog_product_entity_text` " 
       . "SET `value`='%s' WHERE `value`='%s'", 
        $row['value2'], $row['value']); 
+0

에코는 좋은 생각이었습니다. 여전히이 줄이 아니라는 것을 의미하는 동일한 오류를줍니다. 위 코드를 전체 코드로 업데이트했습니다. –

+0

무엇'echo()'가 당신에게 –

0

당신이 값이 test 있는지 확인하려는 의심의 여지가. 그렇게하기 위해 문자열을 Enquote :

SET value='" . $row['value2'] . "' 
WHERE value = '" . $row['value']; . "' 

하지만 당신은 정말 당신의 데이터를 탈출, 쿼리를 parametrizing하고, 그렇지 않은 경우되어야한다.

+0

를 준다는 것을 보여줍니다. 여전히 $ sql2 = "UPDATE mage_catalog_product_entity_text SET value ="같은 오류를 반환합니다. $ 라인. "WHERE value = '". $ row [ 'value']; . " '"; –

+0

'SET' 절과 동일합니다. –

0

귀하의 열 value은 텍스트 열입니다. 그런 다음 어디에서 값을 따옴표로 묶어야합니까?

UPDATE mage_catalog_product_entity_text 
SET value='" . $row['value2'] . "' 
WHERE value = '" . $row['value'] . "'"; 
0

당신이 올바르게 인용하고 있는지 확인하십시오. 쿼리를 가정하면 따옴표입니다 :

$query = "UPDATE mage_catalog_product_entity_text" . 
     "SET value='" . $row['value'] . "'" . 
     "WHERE value = '" . $row['value2'] . "';"; 

당신의 편집에 '에코'를 들어

을 (점 그냥 문자열을 연결할) : 올바른 형식이 될 것

echo "UPDATE mage_catalog_product_entity_text SET value='$lines' WHERE value = '" . $row['value'] . "'"; 

, 큰 따옴표를 사용하기 때문에 표준 변수 $ lines은 바깥에있을 필요가 없습니다.

0

준비된 쿼리 (mysqli/pdo)를 살펴보십시오. "값"중 하나의 내용에 SQL 코드가 포함되어 있고 정상적인 SQL로 실행 되었으면 달성하려고하는 것이 재앙이 될 수 있습니다. 특히 사용자가 제출 한 값에 대해 생각해보십시오. 그렇지 않으면 mysql_real_escape과 함께 값을 적절히 인용해야합니다.