更新值等于的值

时间:2012-10-30 12:35:04

标签: php mysql

目前正在接触MYSQL和PHP,而且仍然是非常初学者。谁能指出我在这里做错了什么:

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

我正在尝试将值设置为另一个值,其中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其他一些数据

编辑:已解决 - 我的错误是在建议的编辑中错误地移动

6 个答案:

答案 0 :(得分: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'] . "'";

请注意在每个子句中添加两个额外的单引号。

答案 1 :(得分: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']);

答案 2 :(得分:0)

毫无疑问,您正在尝试检查值是否为test。引用你的字符串:

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

但是你应该真正地对你的查询进行参数化,如果没有,就可以逃避你的数据。

答案 3 :(得分:0)

我想,您的专栏value是一个文本专栏。然后,您必须将where值括在引号中:

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

答案 4 :(得分:0)

检查你的引用是否正确。假设您的查询在双引号内:

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

(点只是连接字符串)

编辑中的'echo':

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

这将是正确的格式,因为你使用双引号,标准变量$ lines不需要在外面。

答案 5 :(得分:0)

请查看准备好的查询(mysqli / pdo)。如果您的任何一个“值”的内容包含SQL代码并且将作为普通SQL执行,那么您要实现的目标可能是灾难性的。特别考虑用户提交的值..否则,请务必使用mysql_real_escape并正确引用值。