对于令人困惑的标题感到抱歉,但有点难以解释。
我在MySQL中有三个表:zones(id, name)
,sellers(id, name)
,geopricings(id, zone [FK references zones.id], seller [FK references sellers.id], value)
每个卖家根据区域有不同的价格(geopricings.value
)。
在geopricings
表格中,每个卖家应该有9行(共有9个区域),其中包含相应的值,如this,所以如果有10个卖家,我会有90行。
每当我从下拉列表中选择卖家时,我想创建一个包含9个价格输入的表单,如果卖家价格已经插入则填充,或者如果尚未插入卖家价格则为空。
如果已插入卖家价格,此查询将返回9行,但如果卖家不是(WHERE
子句失败),则返回空集。
$getRows = $dbh->prepare("
SELECT zones.*, geopricings.value
FROM zones LEFT JOIN geopricings ON zones.id = geopricings.zone
WHERE geopricings.seller = :seller
");
$getRows->execute(array( 'seller' => $_POST['seller'] ));
$rows = $getRows->fetchAll();
然后我会生成表格
<div id="geoZones" class="sizeTableQta zoneTable w100 cf">
<?php foreach($rows as $zone): ?>
<p>
<input type="hidden" name="zone[]" class="input w50 fl" value="<?= $zone->id ?>">
<span><?= $zone->name ?></span>
<input type="text" name="value[]" class="input w50 fl" value="<?= $zone->value ?>">
</p>
<?php endforeach; ?>
</div>
因此,如果未插入卖家,则表单为空,但我想生成带有空输入的表单,以便我可以在地理位置表中插入新的卖家。
我知道问题出在查询中,所以我需要对其进行修改,以便它始终返回9行,无论seller.id
是否已经在geopricings
表中。
这听起来令人困惑,但如果难以理解,我会尝试进一步解释。
我希望你能帮助我。
谢谢。