假设我做这样的事情:
//get unit id
$query = "SELECT id FROM units WHERE unit_name = '".$unit."'";
$id = mysqli_query($con, $query);
$unit_id = 0;
while ($row = mysqli_fetch_array($id))
{
$unit_id = $row['id'];
}
为什么$unit_id
在 while 循环之外没有更改?
发生的情况是这样的:我有一个带有单位列表的选择下拉列表,当单击 on 时,将触发 php 代码(以及文件中的其他代码),它会创建一个隐藏的输入字段,其中包含 id。我取消隐藏 id,发现 id 不正确。相反,什么是显示,假设我单击第一个选项,1001
,第二个选项,1002
,第三个,1003
等。这些ids
根本不对应于我的数据库,尽管单位从数据库中的1001
开始。正因为如此,我假设我的$unit_id
没有得到正确的读取,并且不知何故,PHP 不允许以这种方式在 while 循环之外访问变量。我现在看到这个假设还为时过早。谢谢。
两种可能的解释:
- 您的查询失败,但您禁用了错误报告(您也没有输出/记录 MySQL 错误)。 没有
- unit_name这个名字。
如果您默认未启用错误报告,请尝试输入:
ini_set('display_errors',1);
error_reporting(E_ALL);
在脚本的顶部(顺便说一下,在开发环境中,默认情况下应启用错误报告)。此外,您可以尝试使用:
$id = mysqli_query($con, $query) or trigger_error(mysqli_error($con));
以查看可能发生的任何 MySQL 错误。
实际上它改变了。
两个案例..
- 也许您的
$row['id']
值也是 0。
[或]
- 您的查询返回(0 个结果)并且未进入循环。
发生的情况是这样的:我有一个带有单位列表的选择下拉列表,当单击 on 时,将触发 php 代码(以及文件中的其他代码),它会创建一个隐藏的输入字段,其中包含 id。我取消隐藏 id,发现 id 不正确。相反,什么是显示,假设我单击第一个选项,1001,第二个选项,1002,第三个,1003等。这些 id 根本不对应于我的数据库,尽管数据库中的单位从 1001 开始。由于所有这些,我假设我的 $unit_id 只是没有被正确读取,并且不知何故 PHP 不允许以这种方式在 while 循环之外访问变量。我现在看到这个假设还为时过早。谢谢。