Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL,使用内部联接的更新查询以静默方式失败_Php_Mysql_Sql_Database - Fatal编程技术网

Php MySQL,使用内部联接的更新查询以静默方式失败

Php MySQL,使用内部联接的更新查询以静默方式失败,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个使用内部联接的MySQL查询更新不起作用,而类似的使用内部联接的select查询工作得很好 工作选择查询 SELECT fa.tax_rate, efa.entity_id FROM water_civicrmv2.civicrm_financial_account as fa INNER JOIN water_civicrmv2.civicrm_entity_financial_account efa ON efa.financial_account_id = fa.id

我有一个使用内部联接的MySQL查询更新不起作用,而类似的使用内部联接的select查询工作得很好

工作选择查询

SELECT fa.tax_rate, efa.entity_id
FROM water_civicrmv2.civicrm_financial_account as fa
    INNER JOIN water_civicrmv2.civicrm_entity_financial_account efa ON efa.financial_account_id = fa.id 
    INNER JOIN water_civicrmv2.civicrm_option_value cov ON cov.value = efa.account_relationship
    INNER JOIN water_civicrmv2.civicrm_option_group cog ON cog.id = cov.option_group_id
    WHERE efa.entity_table = 'civicrm_financial_type'
    AND cov.name = 'Sales Tax Account is'
    AND cog.name = 'account_relationship'
    AND fa.is_active = 1
更新查询失败

 UPDATE water_civicrmv2.civicrm_financial_account as fa
    INNER JOIN water_civicrmv2.civicrm_entity_financial_account efa ON efa.financial_account_id = fa.id 
    INNER JOIN water_civicrmv2.civicrm_option_value cov ON cov.value = efa.account_relationship
    INNER JOIN water_civicrmv2.civicrm_option_group cog ON cog.id = cov.option_group_id
    SET fa.tax_rate = '123123' 
    WHERE efa.entity_table = 'civicrm_financial_type'
    AND cov.name = 'Sales Tax Account is'
    AND cog.name = 'account_relationship'
    AND fa.is_active = 1

我真的不知道为什么它会无声地失败,因为没有语法错误,只是什么也没发生

更改您的更新SQL,以便更新的对象仅为单个表水\u civicrmv2.civicrm\u财务\u帐户:

 UPDATE water_civicrmv2.civicrm_financial_account as fa
    SET fa.tax_rate = '123123' 
    WHERE fa.id = 
          (SELECT fa.id
             FROM water_civicrmv2.civicrm_entity_financial_account efa
             INNER JOIN water_civicrmv2.civicrm_option_value cov ON cov.value = efa.account_relationship
             INNER JOIN water_civicrmv2.civicrm_option_group cog ON cog.id = cov.option_group_id
             WHERE efa.financial_account_id = fa.id 
               AND efa.entity_table = 'civicrm_financial_type'
               AND cov.name = 'Sales Tax Account is'
               AND cog.name = 'account_relationship'
               AND fa.is_active = 1)

如果这个选择有效,我就吃我的短裤。如果我已经更新了问题,请再看一看。如果解释器没有抛出任何错误,那一定是数据问题。我建议将可管理的数据量拉入Excel,然后迭代运行查询并检查输出,以确保联接按预期执行。我不是MySQL专家,所以更新查询中可能存在语法错误。您是否在MySQL控制台中运行
SELECT
query,然后在PHP中运行
UPDATE
query?我这么说是因为有句点限定符建议跨数据库查询。在PHP中,您通常连接到一个数据库,而在服务器控制台上您可以访问所有数据库。感谢您的回答,但结果仍然相同,并且没有更新字段。我看到您正在使用字符串文字“123123”更新fa.tax_rate。该字段定义为字符串类型还是数字类型?假设您使用的是CiviCRM数据库,我认为问题在于您为fa.tax_rate指定的值超出范围。该列定义为decimal(10,8),它将值限制在-99.9999999到99.9999999之间。我试过了,但问题不是这样。我尝试了值50.55而不是123123,但仍然无法更新该字段