php sql插入double,一次空值一次

时间:2014-05-20 01:09:33

标签: php mysql sql insert

我的代码今天早些时候工作了一段时间,但现在它突然停止工作,我似乎无法弄清楚我做错了什么。

这是我在我的数据库中插入值的代码:

public function ingave()
{
    $db = new Db();
    if(isset($this->m_sDatum)){
    $sql="insert into tblingave (datum, tijdstip, duur, intensiteit, stress)
        values(
            '".$db->conn->real_escape_string($this->m_sDatum)."',
            '".$db->conn->real_escape_string($this->m_sTijdstip)."',
            '".$db->conn->real_escape_string($this->m_iDuur)."',
            '".$db->conn->real_escape_string($this->m_iIntensiteit)."',                     
            '".$db->conn->real_escape_string($this->m_iStress)."'
            )
            ";
    }
    $db->conn->query($sql);
    echo $sql;
}

如果我运行此操作,则会收到错误消息,表明$sql$db->conn->query($sql);行)未被识别。

如果我在没有if(isset($this-m_sDatum))语句的情况下运行它,则回显2 sql并在数据库中插入2行。

在第一行中,所有值都为空,在第二行中插入所有正常值。

如果我像这样运行我的代码:

public function ingave()
{
    $db = new Db();
    $sql="" ;
    if(isset($this->m_sDatum)){
    $sql="insert into tblingave (datum, tijdstip, duur, intensiteit, stress)
        values(
            '".$db->conn->real_escape_string($this->m_sDatum)."',
            '".$db->conn->real_escape_string($this->m_sTijdstip)."',
            '".$db->conn->real_escape_string($this->m_iDuur)."',
            '".$db->conn->real_escape_string($this->m_iIntensiteit)."',                     
            '".$db->conn->real_escape_string($this->m_iStress)."'
            )
            ";
    }
    $db->conn->query($sql);
    echo $sql;
}

它说我的查询为空,但echo $sql;显示

insert into tblingave (datum, tijdstip, duur, intensiteit, stress) values( '2014-05-20', '01:07', '8', '3', '3' )

它也进入了数据库。

这些错误和双重插入可能是什么问题?

1 个答案:

答案 0 :(得分:1)

可能会将$db->conn->query($sql);放入您的if块中。然后使用empty进行检查。 isset非常有用,即使$ this-> m_sDatum为NULL,也会执行MySQL脚本。

public function ingave()
{
    $db = new Db();
    if(!empty($this->m_sDatum)){
    $sql="insert into tblingave (datum, tijdstip, duur, intensiteit, stress)
        values(
            '".$db->conn->real_escape_string($this->m_sDatum)."',
            '".$db->conn->real_escape_string($this->m_sTijdstip)."',
            '".$db->conn->real_escape_string($this->m_iDuur)."',
            '".$db->conn->real_escape_string($this->m_iIntensiteit)."',                     
            '".$db->conn->real_escape_string($this->m_iStress)."'
            )
            ";
    $db->conn->query($sql);
    echo $sql;
    }

}