【问题标题】:Saving php data from mysql_fetch_array as script variables将 mysql_fetch_array 中的 php 数据保存为脚本变量
【发布时间】:2013-11-07 00:39:26
【问题描述】:

一直试图将我的数据从我的 while 循环保存到脚本变量,但没有成功。如果我想如何将我的 php 数据保存到脚本变量中,做了一个例子。这对我不起作用。有人知道吗?不想手动保存所有数据。非常感谢答案!不懂就问:)现在它只保存row2中的最后一个变量。

$id = 0;
while($rows = mysql_fetch_array($data)){
$id = $id + 1;

$data = $rows['data'];

    $id2 = 0; 
    $sql = mysql_query("select * from table where id = '".$data."'");
    while($row2 = mysql_fetch_array($sql)){

    $id2 = $id2 + 1;
    $var = $row2['var']; //lets say this one is HT123
    }

$savethis = "var data" . $id . "_" . $id2 . " = '" . $var . "';"; 
}

echo "<script>";

   echo $savethis;

   //I want it to equal like "var data1_1 = 'HT123';
   //And then do this for each row, so:
   //var data1_2 = 'HW132';
   //var data1_3 = 'PQ542';
   //var data2_1 = 'SA210';
   //Etc

echo "</script>";

【问题讨论】:

  • 如果您还不知道,请注意 PHP 的 mysql_xxx() 函数已被正式弃用。在未来的版本中,它们可能会完全从 PHP 中删除。建议切换到替代 API。 PHP 提供了mysqliPDO 库,可以替代使用。
  • 是的,以前听说过。我需要任何特殊的程序来使用 mysqli 和 PDO 吗?在记事本++中做所有事情并将其保存为.php @Spudley
  • 不,没什么特别的:PDO 和 mysqli 只是 PHP 内置的另一组函数和类,与 mysql 函数完全相同。唯一的区别是你现在使用的函数已经过时了。
  • 它们不能相互结合使用,您应该选择其中一个。我推荐 PDO,因为它不仅支持 MySQL,还支持 PostgreSQL 等,因此更灵活。您可以学习一种编写代码的方法,并且可以更轻松地进行翻译。 It is explained more in depth here

标签: javascript php mysql variables


【解决方案1】:

我真的建议使用 PDO 作为mysql_fetch_array() will be deprecated in the near future

考虑到这一点,如果您可以使用 PDO (here is where you can learn to set up a PDO connection) 做到这一点,我认为这可能会起作用(只是在我的脑海中工作,因为我没有您的数据可以使用:

// code to set up a PDO connection
$sql = "SELECT * FROM first_table";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$first_results = $stmt->fetchAll(PDO::FETCH_OBJ);

$result_array = array();

foreach ($first_results AS $first) {

    $newSQL = "SELECT * FROM second_table WHERE id = '{$first->id}'";
    $newStmt = $pdo->prepare($newSQL);
    $newStmt->execute();
    $second_results = $newStmt->fetchAll(PDO::FETCH_OBJ);

    // append
    $result_array[$first->id][$second_results->id] = $second_results->var; 
}

return json_encode($result_array);

同样,这只是一个粗略的想法,可能有问题。但这应该为您提供由 id 键入的嵌套数组。所以它可能看起来(希望)像这样:

[0]
  [0] => "var", (this would be equivalent to data0_0 = var)
  [1] => "var2"
[1]
  [0] => "foo"

您可以通过使用 AJAX 将请求发送到您的 PHP 文件让它们进行交互,然后您可以期望 JSON 数组作为响应。

【讨论】:

    【解决方案2】:

    您可以使用 json_encode 为您完成脏活!

    echo json_encode($data);
    

    这将编码您拥有的任何 ti json 格式(无论是数组、对象还是变量)

    【讨论】:

    • 不太清楚如何做到这一点:S @tinyByte
    • 自己尝试一下,你会发现,我一直在为我的 ajax 表单这样做
    • 好的,会尝试寻找;)@tinyByte
    【解决方案3】:

    您需要将$varin Apostroff。没有它你的js代码会出错。

    $savethis = "var data" . $id . "_" . $id2 . " = '" . $var . "';"; 
    

    【讨论】:

      【解决方案4】:

      以前做过这些事情。只是让你大致了解一下它是如何工作的。

      在“while”之前添加,然后在while循环之后增加:

          $x=1;
      

      将 $var 设置为数组并在 while 循环后计算其值:

          $var[$x] = $row2['var'];
      

      代码将如下所示:

          $x=1;
          while($row2=mysqli_fetch_array($sql) )
          {
              $var[$x] = $row2['var'];
              $x++;
          }
          $array_length=count($var);
      

      循环“脚本”:

          $id=1;
          $id2=1;
          echo "<script>";
          for($i=1; $i<=$array_length; $i++)
          {
              $savethis = "var data" . $id++ . "_" . $id2++ . " = '" . $var[$i] . "';";
              echo $savethis;
          }
          echo "</script>";
      

      您的完整代码如下所示:

          $x=1;
          while($row2=mysqli_fetch_array($sql) )
          {
              $var[$x] = $row2['var'];
              $x++;
          }
          $array_length=count($var);
      
          $id=1;
          $id2=1;
          echo "<script>";
          for($i=1; $i<=$array_length; $i++)
          {
              $savethis = "var data" . $id++ . "_" . $id2++ . " = '" . $var[$i] . "';";
              echo $savethis;
          }
          echo "</script>";
      

      核心解决方案围绕数组。 希望这会有所帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-01
        • 2019-01-22
        • 1970-01-01
        • 1970-01-01
        • 2013-11-15
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多