我的代码今天早些时候工作了一段时间,但现在它突然停止工作,我似乎无法弄清楚我做错了什么。
这是我在我的数据库中插入值的代码:
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' )
它也进入了数据库。
这些错误和双重插入可能是什么问题?
答案 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;
}
}