【问题标题】:Load Javascript array with MYSQL database data使用 MYSQL 数据库数据加载 Javascript 数组
【发布时间】:2011-03-18 08:27:04
【问题描述】:

假设我有一个 javascript 数组“userName”。我想从名为“user”的数据库表中加载它。

任何人都可以提供想法或示例代码吗?

谢谢

【问题讨论】:

  • 你的意思是你的数组的内容存储在数据库中,还是你想从数据库中获取创建数组的代码?
  • 通常 Javascript 不能直接与数据库对话,您需要介于两者之间。你是如何与数据库对话的?
  • @Guillaume:我想获取代码以从数据库创建数组@deceze:我使用 php..

标签: php javascript mysql


【解决方案1】:

您必须使用 PHP 中的 mysql_connect()mysql_select_db() 函数来连接到您的数据库。之后使用mysql_query() 选择用户表中的字段(如果您的用户表具有字段名称和ID,SELECT name, id FROM user)。然后您可以使用mysql_fetch_assoc() 或任何其他mysql fetch 函数从数据库中获取所有信息。现在您需要将echo 您的数据输入到您网站上的 javascript 中,格式为数组。这很复杂,但您可以从json_encode 获得帮助。

要使用用户名填充您的数组,您可以执行以下操作。

<html>
    <head>
    <script type="text/javascript">
        var userName = <?php
            // Connect to MySQL
            //mysql_connect();
            //mysql_select_db();
            $d = mysql_query( "SELECT name, id FROM user" ) or die( mysql_error() );
            $usernames = array();
            while( $r = mysql_fetch_assoc($d) ) {
                $usernames[] = $r['name'];
            }
            echo json_encode( $usernames );
        ?>;
        // Do something with the userName array here
    </script>
    </head>

【讨论】:

    【解决方案2】:

    使用ajax和php作为中介:

    1. 定义一个空的JS数组:

      var myarray = new Array();

    2. 使用 ajax 调用你的 php 脚本,javascript 将评估 PHP 的输出(注意这里使用原型库):

       new Ajax.Request('myfile.php', {
      
          onSuccess : function(xmlHTTP) {
      
              eval(mlHTTP.responseText);
          }
      
      });
      
    3. 编写你的 PHP 代码来获取数据并打印 JS 代码(它必须是有效的 javscript !):

      $i=0; $q=mysql_query('select ..');
      
      while($row=mysql_fetch_array($q)){               
      
          echo "myarray[".$i."]='".$row['data']."';";
      
          $i++;  
      }
      
    4. 您可以检查您的 Js 数组是否包含数据:

      alert(myarray.length); 
      

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      这会在您的页面中创建一个全局 user 变量。

      <?php
          $user = /* get information from database the way you usually do */;
          // $user == array('id' => 1, 'name' => 'foo', ...);
      ?>
      
      <script type="text/javascript" charset="utf-8">
          var user = <?php echo json_encode($user); ?>;
      </script>
      

      如果您正在寻找动态 AJAXy 解决方案,请遵循一些有关 AJAX 的教程。

      【讨论】:

      • 我实际上不希望混合使用 javascript php 代码来执行此操作...我有单独的 javascript 和 php 脚本,我想从 javascript 调用 php 脚本来获取数据库数据....
      • @Rony 在这种情况下,您将不得不重新学习 AJAX,您可以使用它从服务器加载一些信息。如果user 变量没有改变,这种方法会更好,并且可以节省到服务器的额外往返时间。
      【解决方案4】:

      最好的方法就是在 php 代码中获取数据,然后“编写”javascript 代码以在 php 中生成数组。

      一个简短的例子是:

      echo "a = new Array();";
      foreach($row in $results)
      {
        echo "a[$row[0]] = $row[1];";
      }
      

      我的代码可能很不正确,只是给你一个简单的例子。

      您也可以使用 json 以更优雅的方式做到这一点。

      【讨论】:

      • 我实际上不希望混合使用 javascript php 代码来执行此操作...我有单独的 javascript 和 php 脚本,我想从 javascript 调用 php 脚本来获取数据库数据....
      • 然后您可以向一段 php 代码发出 ajax 请求,这将为您提供 json、xml 或任何您喜欢的格式的数据。
      猜你喜欢
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多