将mysql_fetch_array中的php数据保存为脚本变量

时间:2013-11-06 14:24:45

标签: javascript php mysql variables

一直试图将我的数据从我的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 个答案:

答案 0 :(得分: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)做到这一点,我认为这可能会起作用(因为我没有你的数据可以解决这个问题:< / p>

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

答案 1 :(得分:0)

你可以使用json_encode为你做污垢工作!

echo json_encode($data);

这将编码任何你有的json格式(无论是数组,对象还是变量)

答案 2 :(得分:0)

您需要将$var放入Apostroff。如果没有它,你将在js代码中出错。

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

答案 3 :(得分: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>";

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