PHP:为什么当我打印会话的内容时忽略了前导零


PHP: Why when I print the contents of the session ignores the leading zero?

我在打印内容会话时遇到问题,因为在创建会话时,变量是字符串(从 mysql 字段获得的 varchar):

初始变量:09680040

带警报打印或显示在div: 9680040

???

PHP CODE
$query = "SELECT nombre, apellidop, apellidom, tUser FROM users WHERE ncontrol = '$numeroControl'";
$result = mysql_query($query) or die (mysql_error());
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
    $result = mysql_fetch_array($result);
    $_SESSION['n_control'] = $user['ncontrol'];
}
JS CODE
........
alert <?php echo $_SESSION['n_control'];?>;
JQuery CODE
('#div').html(<?php echo $_SESSION['n_control']; ?>);

编辑:问题仅在显示警报时,以及将内容放在jquery中的div上时

('#div').html(<?php echo $_SESSION['n_control']; ?>);

这将生成以下行,该行将发送到您的浏览器:

('#div').html(09680040);

这将被你的Javascript解析器解释为整数。只需在它周围加上引号,以使其成为字符串:

('#div').html('<?php echo $_SESSION['n_control']; ?>');

这是一个JavaScript问题。它与$_SESSIONmysql_query部分无关。

从本质上讲,您的最终JS代码将变为:

alert 09680040;

忽略明显的语法错误,Javascript会将其视为数字常量。

您必须在PHP代码中创建一个Javascript字符串以保留所有内容。使用 json_encode

alert(<?php echo json_encode($_SESSION['n_control']);?>);

(无论哪种方式,您对问题的描述都是不正确的,示例代码肯定不是您的实际代码。所以这是我的猜测答案..)

尝试:

 $_SESSION['n_control'] = strval($user['ncontrol']);