Php MYSQL选择如果查询-WP自定义字段

Php MYSQL选择如果查询-WP自定义字段,php,mysql,database,wordpress,forms,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查询

我使用的插件允许我从数据库中提取自定义字段值来填充输入字段。该插件是一个计算器表单,它使用我的原始查询将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
但它不起作用,我如何修改它?

您可以使用它

Select Coalesce((SELECT meta_value AS value FROM tr_postmeta WHERE meta_key='pa_meta_debt' AND post_id=<%fieldname5%> Limit 1),0)  As meta_value

如果值是数值或可以转换为数值,并且查询最多只能返回1行,则使用带ifnull或coalesce的sum aggregate函数。如果使用sum,那么结果集将始终有一行。如果找不到匹配的行,sum将返回null,必须使用ifnull或coalesce将其转换为0

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

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

首先查询,它将告诉您是否有任何匹配的记录。如果您的查询可能返回超过1行,我将使用后一种方法。

在这个特定上下文中,meta_值是数字吗?您希望通过上述查询返回1行还是多行?是,元值都是数字。至于行,我不确定,我不太熟悉MySQL如果你运行你的查询,它会返回多少行,以防点击:1或更多?谢谢,但它不起作用。当前该字段中的值为800000,但现在使用您的代码它不会返回任何值。有什么想法吗?如果查询没有返回任何行,那么coalesce将不会运行。这就是我询问数据类型和行数的原因。您是否将查询放在if语句中?如果If为false,则选择select语句。使用不带if语句的代码。coalesce正在检查整个select语句—它不在select语句中。因此,如果没有行返回,它将选择ZeroThank。我使用的第一个代码,它可以根据需要工作。它没有解决我的插件问题:但它确实回答了我的问题,并且功能正确。
SELECT count(*) AS noofrows
FROM tr_postmeta WHERE meta_key='pa_meta_debt' AND post_id=<%fieldname5%>