【发布时间】:2010-11-08 06:20:17
【问题描述】:
所以我遇到了一个令人困惑的(程序员引起的)错误,我是程序员。
我创建了一个包含用户个人资料的网站。用户配置文件有许多字段和一个图像。图片上传就好了。首先将其转换为适合某个区域。
...
//我正在上传一张图片到数据库。
imageConverter->loadImage($_FILE...blah balh).
...
当用户决定改变他的信息时,他也有机会改变他的图片。编辑配置文件过程与配置文件启动过程完全相同。唯一的区别是我一次检查他/她更新的字段,并更改数据库中的特定行(显然这可以最佳完成,但首先我希望它工作:))
令人困惑的部分是这个。当我编辑个人资料信息时,顺序是这样的。 我使用 MYSQLI ($this->mysqli->query($query))。
如果它们被更改,这些将在数据库中进行编辑
- 1 个名字
- 2 姓
- 3个密码
- 4 种不同的首选项(复选框/单选按钮)。
- 5 封电子邮件
- 6 个人资料图片。
- 7 更新会话信息,查询数据库以获取最新信息。
现在 #7 返回一个 false (SELECT * FROM USERSINFO)
现在如果我切换操作顺序。
- 1 个名字
- 2 姓
- 3个密码
- 4 种不同的首选项(复选框/单选按钮)。
- 5 封电子邮件
- 6 更新会话信息,查询数据库以获取最新信息。
- 7 个人资料图片。
效果很好。
有答案吗?这是否意味着如果有 1000 人同时尝试使用我的数据库,那么所有内容都会崩溃?
一些代码:
插入图像(不工作示例中的第 6 步,工作示例中的第 7 步)
$this->mysqli->query("DELETE FROM ".DB_REVIEW_IMAGE_TABLE." WHERE email='$email'");
if ($this->mysqli->query("INSERT INTO ".DB_REVIEW_IMAGE_TABLE." VALUES('$email', '$content', '$imageType')"))
将用户信息更新为会话信息。 (错误示例中的第 7 步,工作示例中的第 6 步)
$this->userInfo = $_SESSION[SESSION_USER_INFO] = $database->getUserInfo($this->email);
其中 $database->getUserInfo($this->email) == "SELECT ".DB_USERS_ALL_MOUNTAIN.", ".DB_USERS_BACK_COUNTRY.", ".DB_USERS_GROOMERS.", ".DB_USERS_PARK.", ".DB_USERS_SEASON_DAYS.", ".DB_USERS_SEX ."、".DB_USERS_YEARS."、".DB_USERS_FIRST_NAME."、".DB_USERS_LAST_NAME."、".DB_USERS_CITY."、".DB_USERS_STATE." FROM ".DB_USER_INFO_TABLE.SQL_WHERE_EMAIL
我喜欢使用常量:)。而 DB_USERS_SEX = 男性或女性(以防万一)
迈克尔
【问题讨论】:
-
请格式化您的问题以获得更好的可读性。使用表单上方的按钮。
-
我的猜测是数据库在插入图片时很忙,所以如果我事先做声明,它工作得很好。好混乱!
-
我们能得到一些实际的代码吗?你到底是如何更新图片的,运行了哪些查询等等?
-
好的,有一些代码:!
-
仍然缺少代码 - 生成和运行查询的实际 PHP 代码会很有帮助。您是在每个步骤中使用单独的 UPDATE 语句,还是在执行过程中构建变量 UPDATE 查询?对我来说最重要的是您没有在 INSERT 中指定字段名称,这意味着您依赖于准确的字段位置(当您修改架构时很容易损坏 - 您将错过代码中的一些查询如果您更改了架构,则很难找到它们)。