假设我做了这样的事情:
//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 循环之外没有改变?
发生的情况是这样的:我有一个包含单元列表的选择下拉列表,单击时会触发 php 代码(以及文件中的其他代码),并且它会创建一个隐藏的输入字段,其中包含 id。我取消隐藏id,发现id不正确。相反,显示的是,假设我单击第一个选项 1001
,第二个选项 1002
,第三个选项 1003
等。尽管数据库中的单位从 1001
开始,但 ids
根本不对应于我的数据库。由于所有这些,我认为我的 $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 错误。
关于PHP mySQL 变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882137/