2012-01-29 28 views
-2

更新语句我有这个说法未能及时更新在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和其他任何浏览器中显示任何错误是常规的。所以我不能告诉你,特定的错误是什么是...

但我取决于你有多少文本提供它,用什么语言测试的thing..and语句作品和不工作?!?

“内容”字段是罪魁祸首,它被设置为“文本”数据类型..

如何显示错误?:

display_errors 

默认值:在
开发价值:在
产值:关

使用error_reporting
Defau LT值为:E_ALL &〜E_NOTICE
发展 值:E_ALL | E_STRICT
生产值:E_ALL &〜E_DEPRECATED

我是否取消了以上所有标记?

+2

我想知道这个用户还没有被禁止。 – 2012-01-29 15:46:33

+0

大声笑.. Shrapnel..if只有PHP显示它的错误像asp.net did ..我甚至不会访问这个网站 – 2012-01-29 15:49:24

+0

@ Col.Shrapnel他可能会重新出现在一个不同的名字。不幸。 – 2012-01-29 15:58:29

回答

3

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

至于没有显示错误,您可以很简单地用display_errorserror_reporting .ini设置在PHP中进行更改。 or die(...)。如果没有别的,PHP应该在某个地方记录错误。

不知道什么错误(如果有的话),这个问题不能超出这样的含糊建议任何合理的形式回答。您是否尝试过输出生成的查询字符串并在mysql监视器中自己执行它?

+0

是否需要在进行更改后重新启动xamp?!? – 2012-01-29 15:45:37

+0

请参阅.ini文件中的更新vvvvvvvvvvvvvvvv – 2012-01-29 15:47:20

+0

,是的。任何更改都需要重新启动。 – 2012-01-29 15:50:35

0

确保您的字符集编码是否正确指定。考虑使用较新的mysqli界面,准备好的报表和正确地跳出你的字符串

现在,您共享的代码片段是经典的sql注入漏洞

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

1

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

但是,有一件事情会导致一个大问题 - 特别是如果您使用希伯来字符,则是字符集。由于您使用的是英文和希伯来语,因此值得尝试使用UTF-8作为字符集。你的MySQL表格应该改为这个字符集,也是内容字段。

+0

我所有的表格都是:utf8_unicode_ci – 2012-01-29 15:52:59