在PHP变量中存储多个值

时间:2013-01-28 10:17:38

标签: php mysql arrays

我有点麻烦...我正在执行一个可能有5个结果(1,2,3,4或5)并将它们放在PHP变量中的查询。我需要在一个表中立即在另一个查询中使用此变量,其中只存在这5个值中的1个。

目前,我认为该变量只保留“5”,即最后找到的结果,如果当前值不是“5”,则后来在第二个查询中找不到任何结果。

我很想知道是否有办法将所有这5个值存储在一个变量中,并在第二个查询中循环使用它们而不使用数组?

我的代码在这里:

//Find the User's ID and the ID of the last question answered
$sqlA = mysql_query("SELECT PKID, LastQuestionAnswered FROM User WHERE EmailAddress = '***'");
//If the operation produces an error, output an error message
if (!$sqlA) {
    die('Invalid query for SQLA: ' . mysql_error());
}
//Count the number of rows output
$sqlACount = mysql_num_rows($sqlA);
//If rows exist, define the values
if ($sqlACount > 0) {
    while ($row = mysql_fetch_array($sqlA)) {
        $sqlAPKID = $row["PKID"];
        $sqlALastQuestionAnswered = $row["LastQuestionAnswered"];
    }
}

//Find the answer given by the user to the last answered question
$sqlB = mysql_query("SELECT Answer FROM Responses WHERE User = $sqlAPKID");
//If the operation produces an error, output an error message
if (!$sqlB) {
    die('Invalid query for SQLB: ' . mysql_error());
}
//Count the number of rows output
$sqlBCount = mysql_num_rows($sqlB);
//If rows exist, define the values
if ($sqlBCount > 0) {
    while ($row = mysql_fetch_array($sqlB)) {
        $sqlBAnswer = $row["Answer"];
    }
}

//Find the number of the next question to be answered based on the user's previous answer and the question they answered
$sqlC = mysql_query("SELECT NextQuestion FROM Answers WHERE QuestionNumber = $sqlALastQuestionAnswered AND PKID = $sqlBAnswer");
//If the operation produces an error, output an error message
if (!$sqlC) {
    die('Invalid query for SQLC: ' . mysql_error());
}
//Count the number of rows output
$sqlCCount = mysql_num_rows($sqlC);
//If rows exist, define the values
if ($sqlCCount > 0) {
    while ($row = mysql_fetch_array($sqlC)) {
        $sqlCNextQuestion = $row["NextQuestion"];
    }
}
//If there is no value for $sqlCNextQuestion, the user has finished the survey
if (empty($sqlCNextQuestion)) {
    //Redirect the user to the "Survey Complete" page
    echo '<meta http-equiv="refresh" content="0; URL=surveycomplete.php">';
    //If there is a value for $sqlCNextQuestion, the user has not finished the survey
} else {

因此,目前,如果找不到$SQLCNextQuestion的值,则会将用户重定向到“调查完成”页面。

任何想法和帮助将不胜感激,请放心,在推出之前将编辑代码以利用PDO ... :)

4 个答案:

答案 0 :(得分:0)

如果你不想使用一个数组(我不知道你为什么不这样做),你可以用一个分隔符(一个肯定不会出现在分隔符中的分隔符)将结果连接在一个字符串中。任何潜在的查询结果),然后随后爆炸()该字符串。

然而,它仍然使它成为一个数组,但另一种方法是通过从中创建子串来搜索连接的字符串,所有这些都是完全混乱的。请使用数组:)

答案 1 :(得分:0)

如果结果超过1,只需使用数组。

$sqlCNextQuestion[] = ...

而不是

$sqlCNextQuestion = ...

结束时您可以通过print_r或var_dump函数

查看结果
print_r($sqlCNextQuestion);

同样适用于$ sqlBAnswer等。

答案 2 :(得分:0)

尝试使用implode函数,例如

<form action="" method="post">
<input type="submit" name="foo" value="A" />
<input type="submit" name="foo" value="B" />
<input type="submit" name="foo" value="C" />
<input type="submit" name="foo" value="D" />
</form>

<?php
echo implode('', $_POST['foo']);
?>

每个提交按钮中的属性名称:name =“foo []”然后,在php中,$ _POST ['foo']包含一个数组,其值为每个“foo []”

echo implode('', $_POST['foo']);

答案 3 :(得分:0)

您可以使用PHP array获得最佳输出。

//Count the number of rows output
$sqlALastQuestionAnswered = array();

$sqlACount = mysql_num_rows($sqlA);
$count = 0;
//If rows exist, define the values
if ($sqlACount > 0) {
    while ($row = mysql_fetch_array($sqlA)) {
        $sqlAPKID[$count] = $row["PKID"];
        $sqlALastQuestionAnswered[$count] = $row["LastQuestionAnswered"];
        $count++;
    }
}
  

计数变量将包含结果总数。

     

现在你可以通过数组索引访问特定元素了    $ sqlALastQuestionAnswered [0] 将返回第一个值,依此类推。