【问题标题】:PHP: Why when I print the contents of the session ignores the leading zero?PHP:为什么当我打印会话内容时忽略前导零?
【发布时间】:2012-05-17 14:04:04
【问题描述】:

打印内容会话时出现问题,因为创建会话时,变量是字符串(从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 上时

【问题讨论】:

  • 代替三个问号,你为什么不显示一些代码?
  • 你确定数据库中的值是以零开头的吗?
  • 这真的是你使用的 JS 代码吗?这看起来并不完全有效......
  • MySQL字段是int类型的吗?这可能就是为什么
  • 不,类型是varchar,只有在显示alert或将内容会话放入div时才会显示错误!

标签: php javascript jquery session


【解决方案1】:
('#div').html(<?php echo $_SESSION['n_control']; ?>);

这会产生以下行,并将其发送到您的浏览器:

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

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

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

【讨论】:

    【解决方案2】:

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

    本质上你最终的 JS 代码将变成:

    alert 09680040;
    

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

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

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

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

    【讨论】:

      【解决方案3】:

      试试:

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

      【讨论】:

      • 同理,因为在显示alert或者将内容放入div时出错!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2018-01-20
      • 2023-02-23
      相关资源
      最近更新 更多