PHP mySQL 变量访问

标签 php mysql sql

假设我做了这样的事情:

//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 循环之外的变量。我现在发现这种假设还为时过早。谢谢。

最佳答案

两种可能的解释:

  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 错误。

关于PHP mySQL 变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882137/

相关文章:

php - HTML 输入标签将占位符作为值传递给 PHP

php - 搜索 PHP 示例 new stripe "checkout"集成 stripe-php

php - 为什么换行符转义序列没有被转换成换行符?

python - 如何使用python获取所有没有特定标签的mysql实例?

php - 网页的动态下拉列表未从我的数据库中填充

php - 将数据库中的字段与php中的整数进行比较

mysql - 如何在 MySQL 中将名称中的一个字母替换为另一个字母?

php - 无法使用预准备语句将链接插入 MySql

php - 如何使用 CodeIgniter 从数据库中检索数据?

php - fatal error :在安装了 mysqlnd 的情况下调用未定义的方法 mysqli_stmt::get_result()