表格就像这样
我想通过指定ArchiveID和RecipientID
来更新DecryptionDate这是我的代码
$this->load->database();
$date = date("Y-m-d H:i:s");
$data = array('DecryptionDate' => $date);
$array = array('ArchiveID'=>$archiveID.'','RecipientID'=>$userID.'');
$this->db->where($array);
$this->db->update('log', $data);
if ($this->db->affected_rows() > 0) {
echo "SUCCESS";
} else {
echo "FAIL";
}
我的问题是我只能在$archiveID
为911且$userID
为test01时才更新数据,但当$archiveID
为911且$userID
为test02时程序无法更新
添加echo $this->db->last_query();
后我
UPDATE
log
SETDecryptionDate
='2011-11-16 20:01:39'WHEREArchiveID
='911'和RecipientID
='test01'
当ArchiveID为test01且更新为SUCCESS
时和
UPDATE
log
SETDecryptionDate
='2011-11-16 20:03:10'WHEREArchiveID
='911'和RecipientID
='test02'
当ArchiveID为test02且更新为FAIL时
我试过这个
$this->load->database();
$date = date("Y-m-d H:i:s");
$this->db->query('UPDATE log
SET DecryptionDate = \''.$date.'\'
WHERE ArchiveID = \''.$archiveID.'\' AND RecipientID = \''.$userID.'\'');
if ($this->db->affected_rows() > 0) {
echo "SUCCESS";
return TRUE;
} else {
echo "FAIL";
return FALSE;
}
但结果仍然相同
并尝试仅检查此类
的RecipientID$this->load->database();
$date = date("Y-m-d H:i:s");
$this->db->query('UPDATE log
SET DecryptionDate = \''.$date.'\'
WHERE RecipientID = \''.$userID.'\'');
if ($this->db->affected_rows() > 0) {
echo "SUCCESS";
return TRUE;
} else {
echo "FAIL";
return FALSE;
}
使更新成功,只有与RecipientID
匹配的记录,但不包含与其他记录重复的ArchiveID
最后,我使用以下代码而不是通过CI测试使用常见php文件的更新,结果也是失败
$date = date("Y-m-d H:i:s");
$strSQL = "UPDATE log SET DecryptionDate = '".$date."' WHERE ArchiveID = '911' AND RecipientID = 'test02' ";
$objQuery = mysql_query($strSQL);
if( mysql_affected_rows($objQuery) != 0 )
{
echo (" SUCCESS ");
} else {
echo (" FAIL ");
}
所以我认为这必须是数据库问题
这是DB结构
和ArchiveID和RecipientID是索引
答案 0 :(得分:0)
代码看起来很好。请检查所有字段是否拼写正确,值是否符合预期。
尝试使用这种更详细和调试友好的方式,它应该可以帮助您发现问题(可能$userID
包含一个空格,或者像这样的微不足道的事情)。最后调用last_query()以查看查询是否真的是您想要的
//...
var_dump($archiveID);
var_dump($userID);
$this->db->where('ArchiveID',$archiveID);
$this->db->where('RecipientID',$userID);
$data = array('DecryptionDate' => $date);
$this->db->update('log', $data);
// call this to test the correct query; see if is what you intended
echo $this->db->last_query();
答案 1 :(得分:0)
当你说不,你的意思是你不能连接MySQL或phpMyAdmin,或者不,test2上的查询不会返回任何结果?如果第二个是真的,你可以选择*并验证存在的字段吗?我无法帮助,但想想你的数据可能发生了什么。
答案 2 :(得分:0)
我尝试从数据库导出数据并截断它然后导回数据,它可以帮助,问题解决了。
答案 3 :(得分:0)
我已使用此代码检查更新查询状态。
$this->db->where($array);
$status = $this->db->update('log', $data);
if($status)
echo 'Success';
else
echo 'Fail';