php - PHP 变量(全局)似乎在下一个代码块中变为 NULL
问题描述
我正在使用 PHP 来:
- 打开与 MySQL 数据库的连接。
- 从网站接收一些数据,并将这些数据插入数据库中的表中。
- 从该表中获取最新的自动递增主键的值,并将该值存储在变量中。
- 获取该值并与其他数据一起将其插入到同一数据库中的另一个表中。
但是,在我获得最新 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。... 为什么?
解决方案
您不能在声明之前引用变量。您可以在几个不同的地方声明变量:
- 在类体中作为类字段。此处声明的变量称为类级变量。
- 作为方法或构造函数的参数。
- 在方法的主体或构造函数的主体中。
- 在语句块内,例如在 while 或 for 块内。
您可以通过$LastID = null
在之前或之后添加来解决此问题$conn = new mysqli($servername, $username, $password, $dbname);
推荐阅读
- python - Kivy:如何将 x 轴刻度从数字更改为 kivy 花园图中的日期或时间值?
- javascript - 如何使用 PHP 向我的数据库提交多步骤表单
- python - .text 函数在 Python 中使用 selenium 库
- performance - 我的 C++ 应用程序在 docker 容器中运行速度较慢
- node.js - 无服务器框架函数中的上下文和 module.exports
- mysql - 如何从具有唯一列的表中获取行,由另一列指示
- python-3.x - 如何使用 keras 为每个新预测重新训练 LSTM?
- c++ - 如何调试boost归档异常输入流错误
- graphql - 为特定列表/数组索引更新 Apollo 本地缓存
- python - XGBoostError:参数 num_class 的值 0 应大于等于 1