php - 从具有公共(public)变量的多个表中选择不同的列

标签 php jquery mysql

我有三个表: - food - toys - animals

每个表都有列 - idcoloritem

toys 有额外的列 - sndate 等等

需要从color = red所有 表中选择所有 项,并在客户端分别获取它们

类似于:

$color = 'red';
$sql = "select * from food, toys, animals where color = :acolor";
$st = $db->prepare($sql);
$st->execute([":acolor" => $color]);
$food = $toys = $animals = '';
while($row = $st->fetch()){
        $food .= "<div class='food' data-id = " . $row['food.id'] . ">" . $row['food.item'] . "</div>\n";
        $toys .= "<div class='toys' data-id = " . $row['toys.id'] . " data-serial = " . $row['toys.sn'] . " data-date = '" . $row['toys.date'] . "'>" . $row['toys.item'] . "</div>\n";
    }
        $animals .= "<div class='animals' data-id = " . $row['animals.id'] . ">" . $row['animals.item'] . "</div>\n";
    }
$arr = [];
array_push($arr, $food, $toys, $animals);
echo json_encode($arr);

客户端

...
data = JSON.parse(data);
$('#wrapfood').html(data[0]);
$('#wraptoys').html(data[1]); 
$('#wrapanimals').html(data[2]);

作为最终结果:

wrapfood 应该有 5 个类为 food
的 div wraptoys 应该有 9 个 div 类 toys
wrapanimals 应该有 21 个类为 animals

的 div

我尝试了上述代码的各种版本但没有成功 - 在服务器端出现错误。

有什么帮助吗?

最佳答案

你可以用这个

$data = array('food' => array(),'toys' => array(),'animals' => array());
$color = 'red';
$foodSql = "select * from food where color = :acolor";
$toySql = "select * from toys where color = :acolor";
$animalSql = "select * from animals where color = :acolor";
$ft = $db->prepare($foodSql);
$tt = $db->prepare($toySql);
$at = $db->prepare($animalSql);
$ft->execute([":acolor" => $color]);
$tt->execute([":acolor" => $color]);
$at->execute([":acolor" => $color]);
$food, $toys, $animals = '';
while($row = $ft->fetch()){
        $food .= "<div class='food' data-id = " . $row['food.id'] . ">" . $row['food.item'] . "</div>\n";
}
array_push($data['food'], $food);

while($row = $tt->fetch()){
        $toys .= "<div class='toys' data-id = " . $row['toys.id'] . " data-serial = " . $row['toys.sn'] . " data-date = '" . $row['toys.date'] . "'>" . $row['toys.item'] . "</div>\n";
}
array_push($data['toys'],$toys);

while($row = $at->fetch()){
        $animals .= "<div class='animals' data-id = " . $row['animals.id'] . ">" . $row['animals.item'] . "</div>\n";
}
array_push($data['animals'],$animals);
echo json_encode($data);

然后在客户端你可以访问数据

data = JSON.parse(data);
$('#wrapfood').html(data.food);
$('#wraptoys').html(data.toys); 
$('#wrapanimals').html(data.animals);

关于php - 从具有公共(public)变量的多个表中选择不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57387646/

相关文章:

php - 将数据库与外部表连接

mysql - 如何按年、月、日列选择 2 个日期之间的所有值?

php - 横幅印象跟踪 - 数据库设计

php - Jquery iCal 插件的问题

php - Javascript链接,ajax,jquery,光标是一个文本编辑器而不是手/手指,即使代码已经工作它总是返回错误结果

php - 在不知道其他函数参数的情况下将函数调用转发给另一个函数

javascript - 2 div 由于滚动条而偏移

javascript - $.getJSON 触发选择更改事件

javascript - jQuery/AJAX post() - 一些问题

mysql - 排序闭包表分层数据结构