3

嗨,我正在执行一个 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);
4

3 回答 3

2

你在哪里看到它说的string(12) ""?请记住始终查看原始输出;源代码。不是浏览器如何呈现它。

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

于 2012-11-27T22:10:24.990 回答
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"
    
于 2012-11-27T22:11:27.930 回答
1

您的字符串中很可能有浏览器正在呈现的 html 标记。

$foo = "<p><img><div><table>";
var_dump($foo); // string(20) ""
于 2012-11-27T22:09:29.913 回答