目前正在接触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其他一些数据
编辑:已解决 - 我的错误是在建议的编辑中错误地移动
答案 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并正确引用值。