php - 连接表中缺少数据时出现 SQL 连接错误

标签 php mysql

表格颜色

    id
    value
    name

table 布

    id
    headline_de
    headline_en
    subline_de
    subline_en
    backgroundcolor_id
    foregroundcolor_id

sql查询

    select covers.*,
    c1.name AS backgroundcolor_name,
    c1.value AS backgroundcolor_value,
    c2.name AS foregroundcolor_name, 
    c2.value AS foregroundcolor_value
    from covers
    join colors AS c1 on covers.backgroundcolor_id = c1.id
    join colors AS c2 on covers.foregroundcolor_id = c2.id

这是做什么的?

我在“颜色”表中存储了一些带有名称的颜色。然后我存储一些英语/德语标题+副线,并在表“封面”中定义背景和前景色。 查询现在连接“颜色”表中的正确值 - 工作完美。

我需要改进的地方

当我删除任何颜色时,颜色 ID 丢失 - 查询会弹出 PHP 错误,或者只是不显示缺少颜色 ID 的行。

但我想保留封面的 sql 结果 - 这样无论我是否有背景/前景色,我都可以显示封面。有没有办法在查询中检查颜色是否不存在 > 替换为固定值以防止 PHP 错误或缺少颜色 id 的受影响封面的缺失行结果?

最佳答案

左连接返回连接左侧的所有内容,以及找到匹配项的右侧的所有内容,如果未找到匹配项,则返回连接的左侧,右侧返回 null 。

关于php - 连接表中缺少数据时出现 SQL 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47029995/

相关文章:

php - Autoselect 和 jQuery post 不能一起工作

mysql - sql连接多个条件

java - 使用服务器IP地址连接到mysql

php - 恢复具有特定 ID 的 MySQL 项目

php - MongoDB(Mongoose 和 Mongo 客户端 PHP)在 concat 字段中搜索

php - 循环遍历MySQL数据库直到有结果,然后中断

javascript - 我想将数据库元素数组提取到表中

c# - 在 gridview 中删除不起作用

php - 如何在 PHP 5.1 中将 E5%AE%89%E5%85%A8 转换为这种格式安全

php - 连接 2 个表的查询(使用 LIKE 和准备好的语句)