2012-11-27 48 views
3

您好我正在執行一個SQL查詢(只返回一行),我在屏幕上打印一個特定的列僅用於測試目的。我遇到的問題是,我正在打印的列包含12個字符的字符串(abcdef123456),但有時打印的變量是空的。 所以,當我做var_dump($test);var_dump輸出空字符串-php

有時我得到:

string(12) "abcdef123456" 

但另外一些時候,我得到

string(12) "" 

我不明白爲什麼它知道有12個字符,但它仍然是空的,並有時它說12個字符,但它的完整。由於這個原因,我不能執行其他函數,因爲它們依賴於字符串。

編輯:這裏是查詢

$query="SELECT * FROM members WHERE name='$member'"; 
$sqlResult=mysql_query($query); 
$row = mysql_fetch_assoc($sqlResult); 
$test = $row["membercode"]; 
var_dump($test); 
+0

向我們展示querry – 2012-11-27 22:09:30

+0

PLZ,顯示代碼。你檢查數據庫連接是否成功嗎?也許,這是原因? – user4035

+0

var_dump($ test,bin2hex($ test));'give?我問,因爲有沒有顯示字符。 'bin2hex'會顯示一個字符串的hexdump,它使所有的東西都可見。 – hakre

回答

1

你最有可能有正在由瀏覽器呈現在您的字符串html標籤。

$foo = "<p><img><div><table>"; 
var_dump($foo); // string(20) "" 
+0

查詢的結果是「abcdef123456」。所以沒有標籤。此外,有時它顯示字符串,有時它不是 – Matt9Atkins

2

你在哪看到它說string(12) ""?記得總是看原始輸出;源代碼。不是瀏覽器如何呈現它。

例如,如果字符串是<span></span>,那麼它將顯示爲無。

+0

查詢的結果是「abcdef123456」。所以沒有標籤。另外,它有時會顯示字符串,有時它不會 – Matt9Atkins

+0

在這種情況下,我們需要查看生成輸出的代碼。 – kba

+0

我添加了包含查詢的代碼 – Matt9Atkins

1
  1. 嘗試添加header('Content-Type: text/plain')以將頁面呈現爲文本而不是HTML。或者使用「查看源代碼」來查看HTML源代碼,而不是渲染頁面。字符串中可能存在隱藏的HTML標籤。

  2. 嘗試var_dump(bin2hex($test))。可能會有看不見的控制字符,如"\0"。例如:

    $ php <<< '<?php var_dump("\0\0\0\0"); ?>' 
    string(4) "" 
    $ php <<< '<?php var_dump(bin2hex("\0\0\0\0")); ?>' 
    string(8) "00000000" 
    
+0

我試過bin2hex,但它只是有時會返回所有的0,有時它會打印正確的字符串,但是以十六進制顯示 – Matt9Atkins

+0

@ Matt9Atkins全0表示您有一個空字符的字符串,它是究竟是什麼讓你感到沮喪,不是嗎? –

+0

我明白,但爲什麼它有時會返回一串正確的字符?當然,如果它工作一次,那麼它應該始終工作。然而有時我會得到一串全0的 – Matt9Atkins