我在 PHP 方面有过一次令人沮丧的经历,因为我总是将我的 MEDIUMTEXT 字段作为非字符串字符串返回。当我检查变量的类型时,它说它是一个字符串,但它实际上是一个数组,基本上是一个字符数组,所以我这样做:
while ($row = mysql_fetch_assoc($records)) {
print_r($row["myText"]);
}
它并没有像“这里是一行”那样打印出存储在那里的实际文本,而是只打印 1。这很令人困惑,因为我问它它的数据类型是什么,它说的是字符串……但是如果我这样做了
$row["myText"][0]
它将返回“h”。我完全不知道如何将这个值更改为字符串,我的意思是我会假设 php 有一些功能,但我找不到它。我也不知道为什么它说它不是数组。
有什么想法吗?
按要求编辑
mysql查询
select * from snippets
一个 print_r: 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:
我尝试安装一个新的网络服务器 (Apache) 和一个新版本的 PHP,但它仍然有同样的问题。有趣的是,当我调用 php-cgi.exe 时,它会返回正确输出该变量的数据。我对它可能是什么一无所知,唯一的另一个是我可以安装不同版本的 mysql。我明天会尝试并报告。
edit4:我自己解决了这个问题,同时牢记这里告诉我的内容。请参阅下面我对自己问题的回答。
最佳答案
你应该简单地使用...
while ($row = mysql_fetch_assoc($records)) {
echo $row["text"];
}
...只要“文本”是您正在使用的表格中的适当字段。就 PHP(一种非类型化语言)而言,您使用的是中等文本这一事实无关紧要。
如果这不起作用,那么听起来问题出在其他地方。
关于PHP:如何将 mysql TEXT 或 BLOB 类型转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078176/