数据库中的插入值即使不是0也是0

时间:2014-12-30 13:20:59

标签: php mysql

我知道这里有一些愚蠢的东西,我在这里丢失了,但是每次在下面的代码中执行其他操作时,0会被添加到我的专栏grupa_id(在评论#prikaz plana下),实际上它应该从我的其他表中选择最大ID叫grupa。当'如果'发生一切都很好,正确的数据被插入到数据库中,即使在我输入'(选择MAX(id)FROM grupa)'时也会插入正确的数据。而不是变量$ dataId。谁能看到我在这里失踪了什么?

$dataId;
            $Data = $ks->getQuery("SELECT id, naziv from grupa WHERE naziv='$postNazivGrupe'");
            if($Data->num_rows>0)
            {
                while($Row = $Data->fetch_assoc())
                {
                    $dataId = $Row['id'];               
                }
            }
            else
            {

                $Data = $ks->getQuery("INSERT into grupa(oznaka_grupe, naziv, nadgrupa) VALUES ('$postOznaka_grupe', '$postNazivGrupe', '$postNazivNadgrupe')");
                $dataId ="(select MAX(id) FROM grupa)";
            }


            ##upis plana
            $Data = $ks->getQuery("UPDATE plan SET grupa_id='$dataId' WHERE id=$postID");

1 个答案:

答案 0 :(得分:1)

在您的其他情况下,您正在生成无效的dataId

$dataId ="(select MAX(id) FROM grupa)";

这不是有效的dataId,该查询的结果将是。之前的答案是正确的,不知道为什么它被删除了。

这使您的查询成为此

"UPDATE plan SET grupa_id='(select MAX(id) FROM grupa)' WHERE id=$postID"

如果您打算这样做,那么删除该变量周围的单引号。使用单引号不执行该子查询并尝试将整个查询作为值,但由于该字段为数字,因此将其转换为0.删除更新查询中$dataId周围的单引号。

这个版本很好

"UPDATE plan SET grupa_id=(select MAX(id) FROM grupa) WHERE id=$postID"