PHP MySQL插入丢弃数据

时间:2009-03-13 01:51:22

标签: php mysql

好的,对我来说这是一个新的。基本上我有一篇表格文章:

id: int auto increment
title: varchar(200)
description: varchar(1000)
ctext: longtext
chtml: longtext

现在我使用mysql_query:

插入此表
INSERT INTO articles
(title, description, ctext, chtml)
VALUES
('$title', '$description', '$text', '$html')

所有值都已通过mysql_escape_string()传递。

这里的文字和html大小约为5k(所以我不能在这里发布完全查询)。

现在,问题在于:查询有效。插入一个新行。但是ctext和chtml列是。这是MySQL 5.0.51a和PHP 5.2.8。就我所知,没有任何错误。

现在我将查询转储到/ tmp中的文件并使用以下命令运行:

mysql -u username -p dbname < /tmp/query

同样的事情。

我将查询复制到Navicat并且它......工作。

那到底是怎么回事?

2 个答案:

答案 0 :(得分:2)

一些随意的想法:

  • 您是否尝试过控制文本长度,看它是否只在某一时刻失败?
  • 你打开什么样的联系?哪个司机?
  • 您是否检查过连接的编码?可能会发送一些无效字符。
  • 您是否尝试过使用parameters代替mysql_escape_string
  • 您是否尝试直接从Navicat中的同一文件执行而不是使用复制粘贴?同样,可能与未通过复制粘贴但未保存在文件中的无效字符有关。
  • 只是为了涵盖我们经常忘记的基础知识,如何验证数据是否未插入?我的意思是,你如何形象化它?你可以有一个换行符,它隐藏了3个可视化方法中的2个中的第一行。只是一个长镜头,但我已经看到它发生。

添加:MySQL连接默认为latin1,您需要使用mysql_query("SET NAMES 'utf8'")之类的内容来传输unicode字符。

答案 1 :(得分:1)

我不确定这是否重要,但mysql_escape_string已被弃用并替换为mysql_real_escape_string

您是否尝试过较小的文字?