0

这是我的 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();

  }
4

3 回答 3

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来解码字符串

于 2013-09-19T16:20:55.453 回答
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->Execute(" UPDATE zen_meta_tags_products_description SET metatags_title = '".mysql_real_escape_string($p_name)."' where products_id=$p_id ");

这应该可以工作,直到 mysql_real_escape_string 被弃用。

于 2013-09-19T16:17:09.957 回答
0

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

于 2013-09-19T16:45:14.843 回答