2010-01-16 211 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]你應該得到「我」的開始是。

相關問題