当我更新表列时发生错误

时间:2013-09-19 16:08:12

标签: php sql

这是我的SQL更新查询。但是问题是当我更新表的标题但是在标题中发生错误时倒置的单个逗号存在?因为在更新查询中反转逗号用于php变量。错误如:

[ UPDATE zen_meta_tags_products_description SET metatags_title = 'What experiences are being evoked in Brancusi's Bird' Where products_id=412 ]

查询如下:

  while(!$ab->EOF)
  { 
    echo  $count. " ". $p_id= $ab->fields['products_id'];
     echo $p_name= $ab->fields['products_name'];
 echo " <br>";
 echo   "meta title : ".$m_name= $ab->fields['metatags_title'];
echo " <br>";
 $db->Execute("  UPDATE zen_meta_tags_products_description SET metatags_title = '$p_name' Where products_id=$p_id ");
$count++;
    $ab->MoveNext();

  }

3 个答案:

答案 0 :(得分:0)

您遇到的问题是名称中的单引号或撇号。这需要转义。在PHP中,转义字符串的最简单方法是mysql_real_escape_string()。我刚刚注意到这将被弃用。为了转义字符串,需要在字符前放置\。例如:

UPDATE zen_meta_tags_products_description SET metatags_title = 'What experiences are being evoked in Brancusi\'s Bird' Where products_id=412

您可以将sql命令更改为:

$ db-&gt;执行(“UPDATE zen_meta_tags_products_description SET metatags_title ='”。mysql_real_escape_string($ p_name)。“'where products_id = $ p_id”);

这应该有效,直到不推荐使用mysql_real_escape_string。

答案 1 :(得分:0)

你也可以试试这个

$db->Execute("UPDATE zen_meta_tags_products_description SET metatags_title = '".$p_name."' Where products_id='".$p_id."' ");

我建议您使用rawurlencode来避免此类错误。那么查询将是

$db->Execute("UPDATE zen_meta_tags_products_description SET metatags_title = '".rawurlencode($p_name)."' Where products_id='".$p_id."' ");

请记住,如果您使用的是rawurlencode,请查看标题。您应该使用rawurldecode解码字符串

答案 2 :(得分:0)

您似乎使用ADOdb库。 在这种情况下,您可以使用qstr函数。