我有这个陈述
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我是否取消上述所有内容?
答案 0 :(得分:3)
您是否在整个脚本/数据库管道中使用相同的字符集?如果整个地方都有字符集更改,那么最终会出现垃圾查询和语法错误。
至于不显示错误,您可以使用PHP中的display_errors
和error_reporting
.ini设置进行更改。 or die(...)
。{{1}}。如果不出意外,PHP应该在某个地方的某个文件中记录错误。
在不知道错误(如果有)的情况下,除了这样模糊的建议之外,这个问题无法以任何合理的形式得到解答。您是否尝试输出生成的查询字符串并在mysql监视器中自行执行?
答案 1 :(得分:1)
在MySQL中使用text
作为字段类型最多允许65536个字符,因此不应该导致400个字符长值的任何问题。
然而,有一件事可能导致一个大问题 - 特别是如果你使用的是希伯来字符,那就是字符集。由于您使用的是英语和希伯来语,因此值得尝试UTF-8
作为字符集。您的MySQL表应该更改为此字符集,以及内容字段。
答案 2 :(得分:0)
确保正确指定了字符集编码。请考虑使用较新的mysqli
界面,准备好的语句和正确地转义字符串。
目前,您共享的代码片段是一个典型的 sql注入漏洞。
认真。我知道你不关心安全问题。但你应该关心错误。安全问题通常表明存在严重的错误。字符串转义可以被利用,但只是因为它首先是一个错误,不能正确地逃避字符串。没有恶意打算也会失败。它不会删除您的数据库或任何东西,但只是丢失一些随机记录。 即使您不关心安全问题,丢失由于不良字符而导致的随机记录仍应关注您!