ad

比较两个不同的mysqli_fetch_array与PHP的结果-英雄云拓展知识分享

匿名投稿 352 2024-01-21

我创建了一个数据库,其中保存有关利用程序的信息。这些利用程序可以链接到 垂直的。我设计了DB,以致于我有一个表格,以获得有关每一个利用程序的标准信息,其中包括一个自动插入ID的名称等。我有另外一个桌子列出了所有不同的行业/垂直行业。

除这2个表外,我还有第3个连接两张表,看起来像这样(我在PHP数组中显示了它,由于我认为它更容易浏览):

  $verticals_joint = array(

array('vertical_joint_id' => '1','vertical_id' => '11','demo_id' => '173'),

比较两个不同的mysqli_fetch_array与PHP的结果-英雄云拓展知识分享

array('vertical_joint_id' => '2','vertical_id' => '12','demo_id' => '173'),

array('vertical_joint_id' => '3','vertical_id' => '13','demo_id' => '173'),

array('vertical_joint_id' => '4','vertical_id' => '2','demo_id' => '174'),

array('vertical_joint_id' => '5','vertical_id' => '4','demo_id' => '174'),

array('vertical_joint_id' => '6','vertical_id' => '3','demo_id' => '175'),

array('vertical_joint_id' => '7','vertical_id' => '4','demo_id' => '175'),

array('vertical_joint_id' => '8','vertical_id' => '8','demo_id' => '176'),

array('vertical_joint_id' => '9','vertical_id' => '9','demo_id' => '176'),

array('vertical_joint_id' => '10','vertical_id' => '1','demo_id' => '92'),

array('vertical_joint_id' => '11','vertical_id' => '3','demo_id' => '92'),

array('vertical_joint_id' => '12','vertical_id' => '12','demo_id' => '92'),

array('vertical_joint_id' => '13','vertical_id' => '1','demo_id' => '179'),

array('vertical_joint_id' => '14','vertical_id' => '3','demo_id' => '179'),

array('vertical_joint_id' => '15','vertical_id' => '4','demo_id' => '179'),

array('vertical_joint_id' => '16','vertical_id' => '2','demo_id' => '180'),

array('vertical_joint_id' => '17','vertical_id' => '4','demo_id' => '180')

);

Vertical_ID将行业/垂直与利用程序/演示联系起来。 emo_id援用利用程序(或我称之为演示)。

现在是我的问题。我在PHP中提出了一段时间的循环,然后在其中嵌套了一个If statement,因此我可以显示所有垂直行业,并标记为给定利用程序创建的垂直行业。例如。这就是我想要实现的:

<select id="Vertical[]" class="form-control verticalText" multiple="multiple">

<option value="1">Education</option>

<option value="2">Manufacturing</option>

<option value="3">State, Local or Provincial Government</option>

<option value="4">Federal Government</option>

<option value="5">Other</option>

<option value="6">Transportation and Logistics</option>

<option value="7">Healthcare</option>

<option value="8">Petrochemical</option>

<option value="9">Utilities</option>

<option value="10">Public Safety</option>

<option value="11" selected>Hospitality</option>

<option value="12" selected>Wholesale Distribution</option>

<option value="13" selected>Human Services</option>

<option value="14">Retail</option>

这就是我要实现的目标,但是当我使用时循环时,它只会正确选择 热忱好客 并且不选择 批发区人工服务.

我的whier-loop +嵌套如果陈说看起来像这样:

//Gathers the names of all existing verticals.

$vertical_query = "SELECT * FROM demos.verticals";

$result_vertical = mysqli_query($con, $vertical_query);

//Gathers information about the particular application you are comparing with.

//It retrieves the verticals for a particular app/demo id.

//For this example I used id 173

$joint_query = "SELECT o.vertical_id, o.vertical_name FROM demos.alldemos alld

LEFT JOIN demos.verticals_joint j ON alld.id = j.demo_id

LEFT JOIN demos.verticals o ON o.vertical_id = j.vertical_id

WHERE alld.id = 173";

$result_joint = mysqli_query($con, $joint_query);

$compare = mysqli_fetch_array($result_joint);

$output = '';

// while there are Verticals to be listed.

while ($row_vertical = mysqli_fetch_array($result_vertical)) {

// If a vertical is already selected for this particular app id,

if ($compare['vertical_name'] == $row_vertical["vertical_name"]) {

//then add the word select to the option so it will be selected

$output .= '<option value="'.$row_vertical["vertical_id"].'" selected>'.$row_vertical['vertical_name'].'</option>';

} elseif ($compare['vertical_name'] != $row_vertical["vertical_name"]) {

//Otherwise just print out the normal option without 'selected'.

$output .= '<option value="'.$row_vertical["vertical_id"].'">'.$row_vertical["vertical_name"].'</option>';

}

}

echo $output;

您是不是知道为何它仅比较我的SQL中的第一项与我的其他选择查询中的垂直行业进行比较?您会建议做不同的事情吗?

看答案

为了检查两个查询之间的所有匹配条件,您需要在 $比较$ row_vertical 数组。现在您只检查所有 $ row_vertical 行到第一行 $比较 (即招待)。并且由于值可以在嵌套循环中覆盖,包括 break 1 满足条件时:

while ($row_vertical = mysqli_fetch_array($result_vertical)) {

while ($compare = mysqli_fetch_array($result_joint)) {

if ($compare['vertical_name'] == $row_vertical["vertical_name"]) {

$output = ...;

break 1;

...

}

}

但是,当您运行一个时,不需要嵌套环 LEFT JOIN 在同一表上,无与伦比的记录将返回 NULL。因此,这种情况下,无需运行和获得冗余的第一个查询,而只需运行一个 $比较 查询,然后检查 NULL.

while ($compare = mysqli_fetch_array($result_joint)) {

// If a vertical is already selected for this particular app id,

if (is_null($compare['vertical_name']) == false) {

//then add the word select to the option so it will be selected

$output .= '<option value="'.$compare["vertical_id"].'" selected>'.$compare['vertical_name'].'</option>';

} elseif (is_null($compare['vertical_name']) == true) {

//Otherwise just print out the normal option without 'selected'.

$output .= '<option value="'.$compare["vertical_id"].'">'.$compare["vertical_name"].'</option>';

}

}

垂直的 如果您保存,值不应重复 WHERE 一个特定的条件 demo_id.


🚀🌟 点击注册 免费试用超级应用平台-英雄云企业级hpapaas 🌟🚀 😃👉🌐

免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

标签:php mysql
上一篇:public mwnumericarray(int行,int列,double [] realdata) - 我应当如何格式化我的双[]?-英雄云拓展知识分享
下一篇:删除最后一个单元后,请避免uitableview转动-英雄云拓展知识分享
相关文章
×