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