php - MYSQL Select If Query - WP自定义字段

标签 php mysql database wordpress forms

我使用的插件允许我从数据库中提取自定义字段值以填充输入字段。该插件是一个计算器表单,它添加了 3 个自定义字段,每个字段都分配给使用我的原始查询的输入字段。

现在,如果我使用它作为我的查询,它工作正常 --

SELECT meta_value AS value FROM tr_postmeta WHERE meta_key='pa_meta_debt' AND post_id=<%fieldname5%>

但是,如果缺少自定义字段值,它会影响我的计算。 select 查询如何提取值(如果存在),如果不存在,则将值设为 0?

这是我正在尝试的查询 --

if (exists (SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tr_postmeta' AND COLUMN_NAME = 'pa_meta_debt'))
begin
    SELECT meta_value AS value FROM tr_postmeta WHERE meta_key='pa_meta_debt' AND post_id=<%fieldname5%>
end

虽然它不起作用,我该如何修改它?

最佳答案

如果值是数字(或可以转换成数字)并且查询最多只能返回1行,那么使用sum()聚合函数使用 ifnull()coalesce()。如果您使用 sum(),那么您的结果集将始终有 1 行。如果没有找到匹配的行,则 sum() 将返回 null,必须使用 ifnull()coalesce() 将其转换为 0 >.

SELECT coalesce(sum(meta_value),0) AS value
FROM tr_postmeta WHERE meta_key='pa_meta_debt' AND post_id=<%fieldname5%>

您还可以选择不更改查询,您可以在处理代码中处理无行返回状态,或者执行一个

SELECT count(*) AS noofrows
FROM tr_postmeta WHERE meta_key='pa_meta_debt' AND post_id=<%fieldname5%>

先查询,会告诉你有没有匹配的记录。如果您的查询可能返回超过 1 行,我会使用后一种方法。

关于php - MYSQL Select If Query - WP自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305975/

相关文章:

php - Symfony2 : Doctrine does not load related entities in many-to-many relation

mysql - 数据库设计 - 将列中的数据加倍

mysql - 如何在复制 MySQL 表中的行后返回行 ID?

mysql - Laravel 根据 json 的范围获取属性值

database - Oracle - 使用 MS Access 的 ODBC 连接错误 (ORA-12154)

database - 数据库架构的目的是什么?

ios - NSPredicate 搜索出现 NSDate 错误

php - AJAX 未将数据传递给 php

php - MySQL:仅返回一个表中的行,其中另一个表的一列中的所有值都相同

PHP 或 MYSQL 无法识别值