【问题标题】:php using variable in loop [duplicate]php在循环中使用变量[重复]
【发布时间】:2014-10-22 23:28:04
【问题描述】:

关于在循环中使用变量的另一个问题。我有两个具有以下列的 mysql 数据库:

country_db(这是数据库的名称) 国家的名字 country_cit_rate 国家级

company_db(这是数据库的名称) 公司名 公司国家 公司级别

我想为每个公司(由“company_name”定义)进行一些计算,这些计算应该从最高级别(“company_level”)运行到编号为 1 的 company_level。

因此我创建了以下循环($level_max 之前定义为 company_db 中的最高 company_level):

do 
{
echo "The number is: $level_max <br>";

$company_variables_array = mysqli_query($con,"SELECT company_name, company_country FROM company_db WHERE company_level=$level_max");

while($company_variables_fetch = mysqli_fetch_array($company_variables_array))
    {
        $company_name = $company_variables_fetch['company_name'];
        $company_country = $company_variables_fetch['company_country'];

        echo $company_name;
        echo $company_country;

    }

$level_max--;
}
while ($level_max>0);

通过使用 echo 语句,我可以看到代码完全按照我的意愿工作。

但是,我已经为下一步苦苦挣扎了两天。对于循环中的每家公司,我想在“country_db”的“country_cit_rate”列中获取相关值。由于 $company_country 已在循环中定义,我希望这是一个简单的步骤,但我收到以下错误消息:“警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,在 XXX 行 XXX 中给出的布尔值 em>"

我习惯了以下代码:

do 
{
echo "The number is: $level_max <br>";

$company_variables_array = mysqli_query($con,"SELECT company_name, company_country FROM company_db WHERE company_level=$level_max");

while($company_variables_fetch = mysqli_fetch_array($company_variables_array))
    {
        $company_name = $company_variables_fetch['company_name'];
        $company_country = $company_variables_fetch['company_country'];

echo $company_name;
echo $company_country;

        $company_country_cit_rate_array = mysqli_query($con,"SELECT country_cit_rate FROM country_db WHERE country_name=$company_country");
        $company_country_cit_rate_fetch = mysqli_fetch_array($company_country_cit_rate_array);
        $company_country_cit_rate = $company_country_cit_rate_fetch['country_cit_rate'];
        echo $company_country_cit_rate . "%";
    }

$level_max--;
}
while ($level_max>0);

我做错了什么?

【问题讨论】:

  • 原因很可能是因为这个WHERE country_name=$company_country"); 是一个字符串,因此你需要引用变量WHERE country_name='$company_country'"); 布尔错误解释它。如果它是int,那么它会起作用,但我非常怀疑它是否有效。
  • 编辑此行以包含以下内容:$company_country_cit_rate_array = mysqli_query($con,"SELECT country_cit_rate FROM country_db WHERE country_name=$company_country") or die(mysqli_error($con)); 并发布结果。我的猜测是查询失败。
  • 太好了,谢谢!这正是 Fred -ii- 所建议的,谢谢大家:-)))
  • 不客气。我会将其作为答案,您可以接受,我们可以关闭问题并将其标记为已解决。 @dathiezer 方法如下 => meta.stackexchange.com/a/5235

标签: php mysql loops variables


【解决方案1】:

评论回答:

原因很可能是因为这个WHERE country_name=$company_country");是一个字符串,所以你需要引用变量
WHERE country_name='$company_country'");

布尔错误解释了它。

如果它是int,那么它会起作用,但我非常怀疑它是否有效。


您应该将or die(mysqli_error($con)) 添加到mysqli_query() 以帮助解决问题。

【讨论】:

    【解决方案2】:

    mysqli_query 返回 false,因为出现错误。

    您可以通过在 mysqli_query 之后调用 mysqli_error($con) 来检查错误;

    顺便说一句,您不应该使用这样的变量构建文字查询字符串。我不会讨论“使用 PDO”的教条,但如果你使用 mysqli,你至少应该使用准备好的语句和绑定参数http://us1.php.net/manual/en/mysqli-stmt.bind-param.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-30
      • 2013-03-26
      • 2020-04-05
      • 2013-06-05
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      相关资源
      最近更新 更多