我有点麻烦...我正在执行一个可能有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 ... :)
答案 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] 将返回第一个值,依此类推。