0

私は困っています... 5 つの結果 (1、2、3、4、または 5) を持つ可能性のあるクエリを実行し、それらを PHP 変数に入れています。これらの 5 つの値のうち 1 つだけが存在するテーブルの直後に、別のクエリでこの変数を使用する必要があります。

現在、変数は最後の結果である「5」のみを保持しており、現在の値が「5」以外の場合、2番目のクエリで結果が見つからないと思います。

これら 5 つの値すべてを 1 つの変数に格納し、配列を使用せずに 2 番目のクエリでそれらを循環させる方法があるかどうか知りたいです。

私のコードはここにあります:

//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

4 に答える 4

0

結果が1つ以上ある場合は、配列を使用してください。

$sqlCNextQuestion[] = ...

それ以外の

$sqlCNextQuestion = ...

最後に print_r または var_dump 関数で結果を表示できます

print_r($sqlCNextQuestion);

$sqlBAnswer などについても同様です。

于 2013-01-28T10:25:48.407 に答える
0

最良の出力を得るには、 PHP 配列を使用できます。

//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]が最初の値を返すなどのように、配列インデックスによって特定の要素にアクセスできるようになります 。

于 2013-01-28T10:34:43.243 に答える
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']);
于 2013-01-28T10:27:24.753 に答える
0

配列を使用したくない場合 (使用しない理由がわかりません)、結果を区切り文字 (潜在的なクエリには絶対に存在しない区切り文字) を使用して単一の文字列に連結できます。結果)、そして後でその文字列を爆発()します。

ただし、それでも配列になりますが、別の方法は、連結された文字列から部分文字列を作成して検索することです。これはすべて完全に面倒です。配列を使用してください:)

于 2013-01-28T10:23:14.280 に答える