【发布时间】:2021-03-17 21:58:36
【问题描述】:
我有两个 SQL 查询:第一个查询从数据库中提取所有 criteria,第二个查询查找任何 criteria completed:
SQL 查询 1
//get all criteria for section
$getcrit = $mysqli->prepare("SELECT id, category_id, section_name, criteria
FROM prepare_criteria
WHERE category_id=? AND section_name=? ");
$getcrit->bind_param('is', $cat_id, $sectname);
$getcrit->bind_result($criteria_id, $category_id, $section_name, $criteria);
$getcrit->execute();
$getcrit->store_result();
$row_cnt = $getcrit->num_rows();
$getcrit->fetch();
SQL 查询 2
//get any checked criteria from db
$getcompcrit = $mysqli->prepare("SELECT prepare_criteria_complete.criteria_id, prepare_criteria.id, prepare_criteria.criteria, prepare_criteria_complete.business_id, prepare_criteria_complete.category_id
FROM prepare_criteria_complete, prepare_criteria
WHERE business_id=?
AND prepare_criteria.id=prepare_criteria_complete.criteria_id");
$getcompcrit->bind_param('i', $business_id);
$getcompcrit->bind_result($cc_criteria_id, $criteria_completed_id, $comp_criteria, $business_id_db, $category_db);
$getcompcrit->execute();
$getcompcrit->store_result();
$gc_row_cnt = $getcompcrit->num_rows();
然后我正在编写一个while 循环来检查任何criteria completed:
if ($gc_row_cnt >=1)
{
while ($getcompcrit->fetch() )
{
if ($cc_criteria_id==$criteria_completed_id)
{
echo $criteria_completed_id." ";
}
if ($criteria_id!=$criteria_completed_id)
{
echo $criteria_id." ";
}
}
}
第二个if 未按预期运行。
我知道必须有一种更清洁的方法来做到这一点!
也许是JOIN 声明?
【问题讨论】:
-
@nbk 我正在尝试在“已完成”表中查找任何
criteria_id,并将它们与prepare_criteria表中的criteria匹配。 -
因为我使用查询来回显复选框并检查
completed_cririteria_id是否为真。
标签: php mysql mysqli while-loop