一直在尝试将我的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>";
我真的建议使用 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 数组作为响应。
你可以用json_encode为你做泥土工作!
echo json_encode($data);
这将对你拥有的任何 ti JSON 格式进行编码(无论是数组、对象还是变量)
您需要
将$var
放在Apostroff中。没有它,您将在js代码中出现错误。
$savethis = "var data" . $id . "_" . $id2 . " = '" . $var . "';";
以前做过这些东西。 只是要给你一个关于这将如何工作的粗略想法。
在"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>";
核心解决方案围绕阵列展开。希望这对:)有所帮助