2010-01-16 212 views
1

我在PHP中遇到了令人沮丧的经历,因为我一直让我的MEDIUMTEXT字段作为非字符串字符串返回。当我检查变量的类型,它说这是一个字符串,但它实际上是一个数组,基本上是一个字符数组,所以我做的:PHP:如何将一个mysql TEXT或BLOB类型转换为字符串?

while ($row = mysql_fetch_assoc($records)) { 
    print_r($row["myText"]); 
} 

哪个不是打印出存储有喜欢的实际文本“这里是一个行” ,它只是打印1.这是令人困惑,因为我问这是什么感觉它的数据类型和它说串......但是,如果我这样做

$row["myText"][0] 

它会返回“H”。我完全失去了如何将此值更改为字符串,我的意思是我会认为php有一些功能,但我找不到它。我也不知道它为什么说它不是一个数组。

任何想法?

编辑按要求

MySQL查询

select * from snippets 

一的print_r: 文本是在MySQL中MEDIUMTEXT列的名称。其他人都没有关系

Array ([index] => 1 [name] => a name [language] => english [text] =>) 1 

EDIT2:

所有生成此错误代码:

$username = "root"; 
$password = ""; 
$hostname = "localhost"; 
$dbname = "TestSnippets"; 

$dbh = mysql_connect($hostname, $username, $password) 
$selected = mysql_select_db("snippets",$dbh); 

$records = mysql_query("select * from snippets"); 

while ($row = mysql_fetch_assoc($records)) { 
    echo print_r($row); 
} 

这将产生每一次的错误。所有其他领域都非常好。但不是MEDIUMTEXT字段。

EDIT3:

我试图安装一个新的网络服务器(Apache的)和PHP的新版本,但它仍然有同样的问题。有趣的是,当我调用php-cgi.exe时,它会返回正确输出该变量的数据。我不知道它可能是什么,唯一的另外一点是我可以安装不同版本的mysql。我明天再试,然后回报。

edit4:我自己解决了这个问题,牢记我在这里被告知了什么。请参阅我的回答以下我自己的问题。

+0

如果你echo $ row [“myText”]'会发生什么? – 2010-01-16 17:01:12

+1

你能为我们打印完整的'$ row'吗? – 2010-01-16 17:02:05

+0

你能用SQL查询和print_r($ row)的完整结果更新你的问题吗? – 2010-01-16 17:04:27

回答

0

哇好吧所以我解决了这个问题,问题是我非常愚蠢。

我没有在我的MySQL查询我的测试串竟是

<? myString" ?> 

它甚至没有黎明在我的PHP最终会解析出该声明,而不是输出它注意到。这就是为什么当我运行php-cgi.exe而不是在浏览器本身显示,因为显示有点不同。

哇,只是介意吹。尽管如此,感谢大家的帮助,没有你告诉我答案我会一路走下一条错误的道路。

神秘解决了。

3

您只需要使用...

while ($row = mysql_fetch_assoc($records)) { 
    echo $row["text"]; 
} 

...只要“文本”是表中的相应字段你使用。就PHP(一种没有输入的语言)而言,使用中等文本的事实并不重要。

如果这不起作用,那么这听起来像是其他地方的问题。

+0

不幸的是,根本没有打印出数据......没有任何东西会得到输出。 – 2010-01-16 17:03:20

+0

也许是因为那里没有数据?你能检查通过MySQL shell客户端或phpMyAdmin返回同样的SELECT查询吗? – 2010-01-16 17:12:02

+0

这是最确定的返回数据。这个领域的数据是肯定的,如果我访问每个单独的字母,它会让我处理它。 – 2010-01-16 17:13:58

2

在php中,你可以像数组一样访问字符串。所以你可以通过它们的索引从字符串中获取字符。

因此,当您拨打$row["myText"][0]的值为“这是行”时。你得到第一个索引为0的字符,即“h”。

如果你打电话$row["myText"][6]你应该得到“我”的开始是。

相关问题