0

说我做这样的事情:

//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,等等。这些ids根本不对应于我的数据库,尽管单位从1001数据库中开始。由于所有这些,我认为我的$unit_idjust 没有被正确读取,并且不知何故 PHP 不允许人们以这种方式访问​​ while 循环之外的变量。我现在看到这个假设还为时过早。谢谢。

4

3 回答 3

1

两种可能的解释:

  1. 您的查询失败,但您禁用了错误报告(也没有输出/记录 MySQL 错误)。
  2. 没有具有该名称的 unit_name。

如果您没有默认启用错误报告,请尝试输入:

ini_set('display_errors',1); 
error_reporting(E_ALL);

在脚本的顶部(顺便说一下,在开发环境中,默认情况下应该启用错误报告)。此外,您可以尝试使用:

$id = mysqli_query($con, $query) or trigger_error(mysqli_error($con));

查看可能发生的任何 MySQL 错误。

于 2013-11-09T19:33:30.623 回答
1

实际上它改变了。

这个有两个案例。。

  • 也许你的$row['id']价值也是0。

[]

  • 您的查询返回(0 个结果)并且它没有进入循环。
于 2013-11-09T19:36:50.627 回答
0

会发生什么:我有一个带有单位列表的选择下拉列表,当单击时,会触发 php 代码(以及文件中的其他代码),它会创建一个隐藏的输入字段,其中包含 id。我取消隐藏id,发现id不正确。相反,显示的是,假设我单击第一个选项,1001,第二个选项,1002,第三个,1003 等。这些 id 根本不对应于我的数据库,尽管数据库中的单位从 1001 开始。由于所有这些,我认为我的 $unit_id 只是没有被正确读取,并且不知何故 PHP 并没有让人们以这种方式访问​​ while 循环之外的变量。我现在看到这个假设还为时过早。谢谢。

于 2013-11-09T20:39:18.303 回答