PHP:如何将mysql文本或BLOB类型转换为字符串?

PHP:如何将mysql文本或BLOB类型转换为字符串?,php,mysql,Php,Mysql,我在PHP中有一段令人沮丧的经历,因为我一直以非字符串的形式返回MEDIUMTEXT字段。当我检查变量的类型时,它说它是一个字符串,但实际上它是一个数组,基本上是一个字符数组,所以我: while ($row = mysql_fetch_assoc($records)) { print_r($row["myText"]); } 它不是打印出存储在那里的实际文本,比如“这里有一行”,而是打印1。这是令人困惑的,因为我问它是什么数据类型,它说字符串。。。然而,如果我这样做 $row["myTe

我在PHP中有一段令人沮丧的经历,因为我一直以非字符串的形式返回MEDIUMTEXT字段。当我检查变量的类型时,它说它是一个字符串,但实际上它是一个数组,基本上是一个字符数组,所以我:

while ($row = mysql_fetch_assoc($records)) {
  print_r($row["myText"]);
}
它不是打印出存储在那里的实际文本,比如“这里有一行”,而是打印1。这是令人困惑的,因为我问它是什么数据类型,它说字符串。。。然而,如果我这样做

$row["myText"][0]
它将返回“h”。我完全不知道如何将这个值转换成字符串,我的意思是我假设php有一些函数,但我找不到它。我也不知道为什么它说它不是数组

有什么想法吗

按请求编辑

mysql查询

select * from snippets
印刷品: text是mysql中MEDIUMTEXT列的名称。其他人没有关系

Array ( [index] => 1 [name] => a name [language] => english [text] => ) 1
编辑2:

产生此错误的所有代码:

$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字段

编辑3:

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


edit4:我自己解决了这个问题,记住了这里告诉我的。请参阅下面我对自己问题的回答。

您只需使用

while ($row = mysql_fetch_assoc($records)) {
  echo $row["text"];
}
…只要“文本”是您正在使用的表中的适当字段。就PHP(一种非类型语言)而言,您使用的是中间文本这一事实是无关紧要的


如果这不起作用,那么听起来问题就在别处。您只需使用

while ($row = mysql_fetch_assoc($records)) {
  echo $row["text"];
}
…只要“文本”是您正在使用的表中的适当字段。就PHP(一种非类型语言)而言,您使用的是中间文本这一事实是无关紧要的


如果这不起作用,那么问题似乎出在别处。

在php中,您可以访问类似数组的字符串。因此,您可以通过索引从字符串中获取字符

因此,当您对一个值调用
$row[“myText”][0]
时,该值为“here is the line”。您将获得索引0处的第一个字符,即“h”


如果您调用
$row[“myText”][6]
您应该得到is开头的“i”。

在php中,您可以访问类似数组的字符串。因此,您可以通过索引从字符串中获取字符

因此,当您对一个值调用
$row[“myText”][0]
时,该值为“here is the line”。您将获得索引0处的第一个字符,即“h”


如果你调用
$row[“myText”][6]
你应该在is的开头得到“i”。

哇,好吧,我解决了这个问题,问题是我太笨了

在mymysql查询中,我没有注意到我的测试字符串实际上是

<? myString" ?>

哇,好吧,我解决了这个问题,问题是我太笨了

在mymysql查询中,我没有注意到我的测试字符串实际上是

<? myString" ?>

如果你
echo$row[“myText”]
会发生什么?你能为我们打印一个完整的
$row
吗?你能用SQL查询和打印($row)的完整结果更新你的问题吗?如果“text”是MySQL列的名称,那么你需要使用echo$row[“text”];此外,根据print\r,文本字段为空。你确定里面有数据吗?你能把所有原始的和相关的代码都传过来吗?如果你
echo$row[“myText”]
,会发生什么?你能为我们打印一个完整的
$row
吗?你能用SQL查询和打印的完整结果更新你的问题吗?如果“text”是MySQL列的名称,然后需要使用echo$row['text'];此外,根据print\r,文本字段为空。你确定里面有数据吗?你能把所有的原始代码和相关代码都传过来吗?很遗憾,这些数据根本就没有打印出来。。。什么也得不到输出,也许是因为里面没有数据?您可以通过MySQL shell客户端或phpMyAdmin检查相同的SELECT查询返回的内容吗?它肯定返回数据。该字段中肯定有数据,如果我访问每个字母,它将允许我处理数据。数据在哪里?我在你的打印垃圾堆里看不到。这列肯定是空的。你能发布更完整的信息吗?print\r dump was Array([index]=>1[name]=>php include[language]=>php[text]=>)我知道看起来文本里面什么都没有,但这不是真的。我正在尝试安装一个不同版本的php,看看这是否是一个奇怪的错误。不幸的是,我们将看到它根本没有打印出数据。。。什么也得不到输出,也许是因为里面没有数据?您可以通过MySQL shell客户端或phpMyAdmin检查相同的SELECT查询返回的内容吗?它肯定返回数据。该字段中肯定有数据,如果我访问每个字母,它将允许我处理数据。数据在哪里?我在你的打印垃圾堆里看不到。这列肯定是空的。你能发布更完整的信息吗?print\r dump was Array([index]=>1[name]=>php include[language]=>php[text]=>)我知道看起来文本里面什么都没有,但这不是真的。我正在尝试安装一个不同版本的php,看看这是否是一个奇怪的错误。我们拭目以待