0

一直在尝试将我的数据从我的 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>";
4

4 回答 4

1

我真的建议使用 PDO,因为mysql_fetch_array() 将在不久的将来被弃用

考虑到这一点,如果您可以使用 PDO 来做到这一点(在这里您可以学习建立 PDO 连接),我认为这可能有效(只是在我的脑海中工作,因为我没有您的数据与:

// 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 数组作为响应。

于 2013-11-06T14:37:23.807 回答
0

您需要放置$var在 Apostroff 中。没有它,您将在 js 代码中出现错误。

$savethis = "var data" . $id . "_" . $id2 . " = '" . $var . "';"; 
于 2013-11-06T14:38:34.293 回答
0

以前做过这个东西。只是会给你一个关于如何工作的粗略想法。

在“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>";

核心解决方案围绕数组展开。 希望这可以帮助 :)

于 2013-11-06T15:44:48.600 回答
0

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

echo json_encode($data);

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

于 2013-11-06T14:27:00.683 回答