无法更新mysql中的update语句

时间:2012-01-29 15:38:51

标签: php mysql

我有这个陈述

     mysql_query("
 UPDATE topic
 SET tag_h1='$tag_h1', tag_h2='$tag_h2',tag_metadata='$tag_metadata',content='$content',title='$title', friendly_url='$friendlyUrl'
 WHERE topic_id=$topic_id
 ") or die(mysql_error());

它适用于英文小文本。但希伯来语中的大量文本(超过400个字符)会导致异常。通常情况下,php代码不会在chrome,firefox和任何其他浏览器中显示任何错误..所以我无法告诉你,具体的错误是什么是..

但是我对这个东西进行了测试......并且该陈述有效并且根据您提供的文本数量和使用的语言不起作用?!

“content”字段是罪魁祸首,它被设置为“text”数据类型..

如何显示错误?:

  display_errors 
     

默认值:开    发展价值:上     产值:关

     

的error_reporting
   默认值:E_ALL& 〜E_NOTICE
   发展   价值:E_ALL | E_STRICT
    产值:E_ALL& 〜E_DEPRECATED

     

我是否取消上述所有内容?

3 个答案:

答案 0 :(得分:3)

您是否在整个脚本/数据库管道中使用相同的字符集?如果整个地方都有字符集更改,那么最终会出现垃圾查询和语法错误。

至于不显示错误,您可以使用PHP中的display_errorserror_reporting .ini设置进行更改。 or die(...)。{{1}}。如果不出意外,PHP应该在某个地方的某个文件中记录错误。

在不知道错误(如果有)的情况下,除了这样模糊的建议之外,这个问题无法以任何合理的形式得到解答。您是否尝试输出生成的查询字符串并在mysql监视器中自行执行?

答案 1 :(得分:1)

在MySQL中使用text作为字段类型最多允许65536个字符,因此不应该导致400个字符长值的任何问题。

然而,有一件事可能导致一个大问题 - 特别是如果你使用的是希伯来字符,那就是字符集。由于您使用的是英语和希伯来语,因此值得尝试UTF-8作为字符集。您的MySQL表应该更改为此字符集,以及内容字段。

答案 2 :(得分:0)

确保正确指定了字符集编码。请考虑使用较新的mysqli界面,准备好的语句和正确地转义字符串

目前,您共享的代码片段是一个典型的 sql注入漏洞

认真。我知道你不关心安全问题。但你应该关心错误。安全问题通常表明存在严重的错误。字符串转义可以被利用,但只是因为它首先是一个错误,不能正确地逃避字符串。没有恶意打算也会失败。它不会删除您的数据库或任何东西,但只是丢失一些随机记录。 即使您不关心安全问题,丢失由于不良字符而导致的随机记录仍应关注您