var_dump输出空字符串 - PHP

4

你好,我正在执行一条SQL查询(仅返回一行),并且为了测试目的,在屏幕上打印一个特定的列。我遇到的问题是,我正在打印的列包含一个12个字符的字符串(abcdef123456),但有时打印出来的变量为空。

因此,当我执行var_dump($test);时,有时会得到:

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);

请展示代码。你检查过数据库连接是否成功了吗?也许这就是原因? - user4035
var_dump($test, bin2hex($test));会输出什么呢?我问这个问题是因为有些字符没有显示出来。bin2hex函数将以十六进制形式显示字符串的内容,从而能让所有字符都可见。 - hakre
我已添加包含查询的代码。 - M9A
请同时添加所涉及字符串的十六进制转储。 - hakre
3个回答

2

你在哪里看到写着string(12) ""?记住,一定要查看原始输出;源代码。不是浏览器呈现的。

例如,如果字符串是<span></span>,那么它将显示为空。


查询的结果是“abcdef123456”。因此没有标签。有时它会显示字符串,有时则不会。 - M9A
在这种情况下,我们需要看到生成您输出的代码。 - kba

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"
    

我尝试使用 bin2hex 函数,但有时它只返回 0 的字符串,有时它会以十六进制打印正确的字符串。 - M9A
@Matt9Atkins 所有的0意味着你有一个包含空字符的字符串,这正是让你困扰的原因,不是吗? - John Kugelman
我理解,但为什么有时它会返回一个正确字符的字符串?如果它能够正常工作一次,那么就应该总是有效。然而,有时我却得到了一个全零的字符串。 - M9A
1
@Matt9Atkins 的意思是,有时你的 SQL 查询返回的是 "abcdef123456",有时则返回 "\0\0\0\0\0\0\0\0\0\0\0\0"。 - John Kugelman

1
您的字符串中很可能包含HTML标签,这些标签将由浏览器呈现。
$foo = "<p><img><div><table>";
var_dump($foo); // string(20) ""

查询的结果是“abcdef123456”。因此没有标签。有时它会显示字符串,有时则不会。 - M9A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接