Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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_Zend Framework_Zend Db - Fatal编程技术网

Php MySQL在更新其他字段时不更新数据库中的单个字段

Php MySQL在更新其他字段时不更新数据库中的单个字段,php,mysql,zend-framework,zend-db,Php,Mysql,Zend Framework,Zend Db,我使用的是Zend Framework 1.10.8和MySQL服务器5.1.X。我创建数据数组来更新记录,但只有一个字段更新 <?php $where = "`character_id` = '5'"; $healthGained = 5; $data = array(); if ($healthGained > 0) { $data['character_current_health'] = $character['charact

我使用的是Zend Framework 1.10.8和MySQL服务器5.1.X。我创建数据数组来更新记录,但只有一个字段更新

<?php 
    $where = "`character_id` = '5'";
    $healthGained = 5;
    $data = array();
    if ($healthGained > 0) {
        $data['character_current_health'] = $character['character_max_health'] + $healthGained;
        $data['character_max_health'] = $character['character_max_health'] + $healthGained;
        print_r($data);
        $characterInfoTable->update($data, $where);
    }
?>

我从印刷品中得到的是:

排列 ( [字符\u当前\u健康状况]=>430 [character_max_health]=>430 )

但是,字符\u current\u health的值在数据库中不会更改。但是,character_max_health的值不会改变。有人知道这是怎么回事吗


注意:字段名称正确,数据类型正确。这是在运行Ubuntu的Linux服务器上运行的。

Geeez!没有关系。我有时是个白痴。它正在正确更新,但由于操作流程不畅,我用错误的值重新更新了表。

请提供更多详细信息。什么字段类型是
character\u current\u health
?where子句中的一条注释,是否有任何理由将5作为字符串文本而不是整数传递?@kovshenin在mySQL中无所谓,它将自动转换为字段类型。为了避免在非数值和空值上出现SQL错误(尽管可以说,这些错误应该在以前被发现),这在很大程度上被认为是一个好的实践@Pekka,我没有说这是错误,是的,是最佳实践。此外,如果从5中删除引号,则可以对整个
character\u id=5
string文本进行单引号,单引号的解析速度比双引号快:-P我认为..~每纳秒计数一次~使用Zend_Db_Profiler或告诉MySQL记录您的查询,并查看生成的查询是什么。因此,这些“奇怪”错误的原因常常是。当这样的事情发生时,除非你放弃所有的假设,否则很难调试!