【问题标题】:Get Data from Mysql on init在初始化时从 Mysql 获取数据
【发布时间】:2025-12-24 03:30:12
【问题描述】:

当页面打开时,我需要从 mysql 获取数据(image_url、名称等)。 我正在考虑在 oninit() 事件上执行此操作。但是我不确定这是否是最好的方法。

到目前为止,我得到的代码花费的时间比我预期的要多,所以也许我需要在此操作进行时添加“正在加载”消息。我的方法对吗?

提前致谢

【问题讨论】:

  • 你能贴一些你现在在做什么的代码(sn-ps)吗?
  • 嗨哈蒂。我可以稍后添加代码(我现在没有)。我正在做的是:我从我的 html 调用一个 php 文件。在那个文件中,我有我的查询并从数据库中返回数据。但是,我需要获取很多信息。让我们说大约 20 个项目,每个项目 4 个项目。
  • 也许我误解了你想要做什么,但如果你使用 AJAX,那么页面加载时间应该不会受到影响。这当然是假设您甚至需要使用 JavaScript — 如果您只需要加载一次数据,那么最好直接使用 PHP 获取数据。
  • 您需要定期从服务器中提取数据还是仅在页面加载时提取数据?
  • 我正在按照@Jamie 的要求进行思考。如果页面加载后不需要询问信息/数据,则无需为此进入 JS。它应该是您页面的一部分(我猜是 PHP)。缓慢可能是多种因素:查询错误、索引错误、主机速度慢……是图像需要很长时间才能“出现”吗? (检查 Firebug 或其他开发工具中的网络监视器)是查询本身需要很长时间吗? (尝试在查询之前开始并在查询之后结束的计时器)

标签: php javascript mysql init


【解决方案1】:

好的,这里有一些场景——我不太确定你需要什么。第一个是在页面加载时提取数据一次。您使用控制器通过视图呈现数据以访问您的数据模型。一切都是在页面加载时处理的,并且是静态的。

// Use simple PHP

<?php
$con = mysql_connect("localhost","peter","abc123");
if(!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_array($result))
{
    echo $row['image'];
    echo $row['names'];
    // etc.
}
?>

第二个更动态,使用 AJAX 不断地从您的服务器中提取数据。您可以使用 JavaScript 的 setInterval 定期加载数据:

// Load MySQL data every 15 seconds with jQuery

$(function () {
   setInterval(function() {
      $.ajax({
         url: '/path/to/controller',
         data: 'var1=hey&var2=bro',
         dataType: 'html',
         type: 'POST',
         success: function(data) {
           $('.div_of_your_choice').html(data);
         })
      });
   },15000);
});

【讨论】:

  • 杰米谢谢!实际上我只需要提取一次数据,但稍后我会访问它。我应该在 oninit 事件中做吗?另一件事......我要拉大约 10 列和 50 行可以说.. 我怎样才能存储这些数据并在以后访问它?我正在考虑为此创建一个数组数组。你认为还有另一种(更快)的方式吗?再次感谢。 .问候
  • 如果您使用 PHP,则无需初始化 AJAX 调用。使用 PHP 调用 MySQL,以便服务器加载所有内容,而不是让访问者不必要地等待。
  • 查看本教程了解更多信息:w3schools.com/php/php_mysql_select.asp
  • 是的,杰米。这是有道理的,感谢您的链接。但是我不知道如何“存储”信息并在以后访问它。你有什么主意吗?我正在考虑前面提到的数组 ou 数组或“隐藏表”,但只是名字听起来很奇怪......