2012-10-30 51 views
0

我現在正在接觸MYSQL和PHP,並且仍然很開心。任何人都可以指出我在做什麼錯在這裏:更新值,其中值等於

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

我想值設置到值等於其當前值另一個變量。因此,有值2就是我與更新和值只是「測試」

我得到的錯誤是:

Unknown column 'test' in 'where clause' 

編輯:此相呼應整個查詢返回相同的錯誤,所以我決定後我其中在所有被提及不是「檢驗」心不是整個代碼:

<?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某些其他數據

編輯:解決 - 是我的錯誤是FTP傳送到在編輯建議了錯誤的位置

+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該表。我建議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']; . "' 

但你確實應該設定參數,你的查詢,如果沒有,逃避你的數據。

+0

仍然返回相同的錯誤:$ sql2 =「UPDATE mage_catalog_product_entity_text SET value =」。 $行。 「WHERE 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'] . "'"; 

這將是正確的格式,既然你使用雙引號,標準變量$行不需要在外面。

0

請查看準備好的查詢(mysqli/pdo)。如果任何一個「值」的內容包含SQL代碼並且已經作爲普通的SQL執行,那麼您嘗試實現的內容可能會是災難性的。特別是關於用戶提交的值的思考。否則,請確保將mysql_real_escape與正確引用值結合使用。