首页 > 解决方案 > PHP 变量(全局)似乎在下一个代码块中变为 NULL

问题描述

我正在使用 PHP 来:

  1. 打开与 MySQL 数据库的连接。
  2. 从网站接收一些数据,并将这些数据插入数据库中的表中。
  3. 从该表中获取最新的自动递增主键的值,并将该值存储在变量中。
  4. 获取该值并与其他数据一起将其插入到同一数据库中的另一个表中。

但是,在我获得最新 id 的值并将其放入变量中(即,当我完成第 3 步并准备好进行第 4 步时),我的变量似乎变为 NULL。

这是我的代码:

<?php
if (authentication succeeds)
  {
  $conn = new mysqli($servername, $username, $password, $dbname);
  if ($conn->connect_error)
    {
    die($conn->connect_error);
    }
  if (!empty($_POST['SomeData']))
    {
    $sql = 'valid SQL statement';
    if ($conn->query($sql) !== TRUE)
      {
      echo $conn->error;
      } else {
             $LastID = $conn->insert_id;
             echo 'Checkpoint A: $LastID type is ' . gettype($LastID) . ' and value is ' . $LastID . '   ';
             }
    }
  echo 'Checkpoint B: $LastID type is ' . gettype($LastID) . ' and value is ' . $LastID . '   ';
  if (!empty($_POST['OtherData']))
    {
    echo 'Checkpoint C: $LastID type is ' . gettype($LastID) . ' and value is ' . $LastID . '   ';
    }
  }
?>

在检查点 A 和检查点 B,$LastID 是一个整数,但在检查点 C,$LastID 是 NULL。... 为什么?

标签: phpmysqlvariables

解决方案


您不能在声明之前引用变量。您可以在几个不同的地方声明变量:

  1. 在类体中作为类字段。此处声明的变量称为类级变量。
  2. 作为方法或构造函数的参数。
  3. 在方法的主体或构造函数的主体中。
  4. 在语句块内,例如在 while 或 for 块内。

您可以通过$LastID = null在之前或之后添加来解决此问题$conn = new mysqli($servername, $username, $password, $dbname);


推荐阅读