【问题标题】:Database image then update = error, update then image = success! why?数据库映像然后更新 = 错误,更新然后映像 = 成功!为什么?
【发布时间】: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 中指定字段名称,这意味着您依赖于准确的字段位置(当您修改架构时很容易损坏 - 您将错过代码中的一些查询如果您更改了架构,则很难找到它们)。

标签: php mysql mysqli


【解决方案1】:

好的,答案很简单。

我的数据库类有一个名为 $mysqli 的模块化级别变量。这个 $mysqli 不知何故同时被使用了。

我连续拨打了 2 次电话。

  • 更新图片
  • 更新会话信息

每个人都使用数据库。但是通过模块化级别 var $mysqli 会以某种方式导致冲突。特别是因为会话信息和图片信息在两个不同的数据库中。我一定对php了解不多,但是这些必须在另一个完成之前执行。因此,为了打破这一点,数据库中的每个方法

  • 创建到数据库的连接
  • 设置要使用的数据库。
  • 执行查询
  • 关闭连接/结果集。

现在可以了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多