在循环中使用变量的php

在循环中使用变量的php,php,mysql,loops,variables,Php,Mysql,Loops,Variables,另一个问题与循环中变量的使用有关。我有两个mysql数据库,其列如下: 国家数据库(即数据库的名称) 国名 国家税率 国家级 公司名称(即db的名称) 公司名称 国家公司 公司层面 我想为每个公司(由“公司名称”定义)进行一些计算,这些计算应该从最高级别(“公司级别”)到公司级别,数字为1 因此,我创建了以下循环($level_max以前定义为company_db中最高的company_级别): do { echo“编号为:$level_max”; $company_variables_arra

另一个问题与循环中变量的使用有关。我有两个mysql数据库,其列如下:

国家数据库(即数据库的名称) 国名 国家税率 国家级

公司名称(即db的名称) 公司名称 国家公司 公司层面

我想为每个公司(由“公司名称”定义)进行一些计算,这些计算应该从最高级别(“公司级别”)到公司级别,数字为1

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

do
{
echo“编号为:$level_max
”; $company_variables_array=mysqli_query($con,“从company_db中选择company_name、company_country,其中company_level=$level_max”); 而($company\u variables\u fetch=mysqli\u fetch\u array($company\u variables\u array)) { $company_name=$company_variables_fetch['company_name']; $company_country=$company_variables_fetch['company_country']; echo$公司名称; echo$company\u country; } $level_max--; } 而($level_max>0);
通过使用echo语句,我可以看到代码完全按照我想要的方式工作

然而,我已经为下一步奋斗了两天。对于循环中的每个公司,我希望获得“country\u db”的“country\u cit\u rate”列中的相关值。由于$company_country已在循环中定义,我希望这是一个简单的步骤,但我收到以下错误消息:“警告:mysqli_fetch_array()希望参数1为mysqli_result,在XXX行的XXX中给出布尔值”

我曾经使用以下代码:

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);
do
{
echo“编号为:$level_max
”; $company_variables_array=mysqli_query($con,“从company_db中选择company_name、company_country,其中company_level=$level_max”); 而($company\u variables\u fetch=mysqli\u fetch\u array($company\u variables\u array)) { $company_name=$company_variables_fetch['company_name']; $company_country=$company_variables_fetch['company_country']; echo$公司名称; echo$company\u country; $company_country_cit_rate_array=mysqli_query($con,“从country_db中选择country_cit_rate,其中country_name=$company_country”); $company\u country\u cit\u rate\u fetch=mysqli\u fetch\u数组($company\u country\u cit\u rate\u数组); $company_country_cit_rate=$company_country_cit_rate_fetch['country_cit_rate']; echo$公司/国家/城市费率。“%”; } $level_max--; } 而($level_max>0);

我做错了什么?

mysqli\u查询返回false,因为有错误

您可以在mysqli_查询之后调用mysqli_error($con)来检查错误

顺便说一句,您不应该用这样的变量构建文本查询字符串。我不打算谈论“使用PDO”的教条,但如果您使用的是mysqli,您至少应该使用准备好的语句和绑定参数来回答:


原因很可能是因为
WHERE country\u name=$company\u country”);
代表一个字符串,因此需要引用变量
其中国家/地区名称=“$company\u country”)

布尔错误解释了这一点

如果它是一个
int
,那么它就可以工作了,但我非常怀疑它是否有效

  • 此外,我想指出的是,您当前的代码是开放的。
    使用,或与,他们更安全


您应该将
或die(mysqli_error($con))
添加到
mysqli_query()
以帮助进行故障排除。

原因很可能是因为
WHERE country\u name=$company\u country”);
代表字符串,因此需要引用变量
WHERE country\u name='$company\u country')布尔错误解释了这一点。如果它是一个
int
,那么它会起作用,但我高度怀疑它是否有效。编辑这一行以包括以下内容:
$company\u country\u cit\u rate\u array=mysqli\u query($con,“从country\u db中选择country\u cit\u rate,其中country\u name=$company\u country”)或die(mysqli\u error($con))并发布结果。我猜查询失败了。太好了,谢谢!这正是弗雷德二世的建议,谢谢大家:-)不客气。我会给你一个答案,你可以接受,我们可以结束这个问题,并将其标记为已解决@dathiezer这里是如何=>
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);