【发布时间】:2011-02-10 06:53:42
【问题描述】:
我有一个包含 4 个表的数据库,但是我正在使用其中 1 个与其他表分开。
在这个表中,我有 4 个字段是 varchar,其余是整数(11 个其他字段),当用户填写数据库时,所有内容都会正确保存,但是到目前为止,数据库值已经发生了 3 次int 在没有任何明显原因的情况下重置为 0。起初,我想,这是因为那些字段(数字应该去哪里)是 varchars 而不是 ints。然而,自从我改变了它,它又发生了。我已经仔细检查了我的代码,我什至没有更新或插入 0 值。此外,我正在使用 codeigniter 和活动记录来防止 SQL 注入并启用 XSS 过滤,有人能指出我可能遗漏的东西或发生这种情况的原因吗?
另外,我很确定这个问题的答案,但是有没有办法恢复一些数据?除了必须要求每个人再次填写所有内容.. =/
** 编辑 **
存储引擎是 MyISAM,排序规则是 latin1_swedish_ci,Pack Keys 是默认值,出于所有意图和目的,它是一个普通数据库
** 编辑 **
这是我的表结构
-- phpMyAdmin SQL Dump
-- version 3.3.5
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Feb 10, 2011 at 09:31 AM
-- Server version: 5.0.51
-- PHP Version: 5.2.14
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `cinesdec_prueba`
--
-- --------------------------------------------------------
--
-- Table structure for table `Oscar`
--
CREATE TABLE IF NOT EXISTS `Oscar` (
`Id` int(20) NOT NULL auto_increment,
`Nombre` varchar(100) default NULL,
`ApPaterno` varchar(100) default NULL,
`ApMaterno` varchar(100) default NULL,
`Edad` varchar(25) default NULL,
`Twitter` varchar(250) default NULL,
`Correo` varchar(250) NOT NULL default '',
`BestPicture` int(10) unsigned NOT NULL,
`ActorLead` int(10) unsigned NOT NULL,
`ActorSupport` int(10) unsigned NOT NULL,
`ActressLead` int(10) unsigned NOT NULL,
`ActressSupport` int(10) unsigned NOT NULL,
`Art` int(10) unsigned NOT NULL,
`Directing` int(10) unsigned NOT NULL,
`Foreing` int(10) unsigned NOT NULL,
`Music` int(10) unsigned NOT NULL,
`Visual` int(10) unsigned NOT NULL,
`Desempate` int(10) unsigned NOT NULL,
PRIMARY KEY (`Correo`),
UNIQUE KEY `Id` (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=89 ;
【问题讨论】:
-
设置全局 general_log = 'ON';并查看有关他运行的查询的日志
-
这是一个租用的服务器,我没有root权限,但我会请管理员帮助我=/
标签: php mysql database codeigniter