0

20 行と 10 列のフォームがあり、要素 ID は _r1、_r2 などで区別され、クエリからすべての値を手動で割り当てるのではなく、それらをループしたいと考えていました。

何かのようなもの

//Set all mileage fields to empty
for ($i = 1; $i <= 20; $i++) {
    $strTravelDate_r.$i = "";
    $strHBE_r.$i = "";
    $strPassenger_r.$i = "";
    $strCongestionCode_r.$i = "";
    $strTravelReason_r.$i = "";
    $strAddress1_r.$i = "";
    $strAddress2_r.$i = "";
    $strDistance_r.$i = "";
    $strRate_r.$i = "";
    $strLineAmount_r.$i = "";
}

//Get mileage claims
$sql_miles = 'SELECT * FROM `tblsaved_mileage` WHERE `strUsername`="'.addslashes($username).'"';
$rs_miles = mysql_query($sql_miles);
$count_miles = mysql_num_rows($rs_miles);
$i = 1;
if ($count_miles > 0) {
    while ($row_miles = mysql_fetch_array($rs_miles)) {
        $strTravelDate_r.$i = $row_miles['strTravelDate'];
        $strHBE_r.$i = $row_miles['strHBE'];
        $strPassenger_r.$i = $row_miles['strPassenger'];
        $strCongestionCode_r.$i = $row_miles['strCongestionCode'];
        $strTravelReason_r.$i = $row_miles['strTravelReason'];
        $strAddress1_r.$i = $row_miles['strAddress1'];
        $strAddress2_r.$i = $row_miles['strAddress2'];
        $strDistance_r.$i = $row_miles['strDistance'];
        $strRate_r.$i = $row_miles['strRate'];
        $strLineAmount_r.$i = $row_miles['strAmount'];

        $i = $i + 1;
    }
}

しかし、私はたくさんの

Notice: Undefined variable: strTravelDate_r in ........

Notice: Undefined variable: strHBE_r in ........

Notice: Undefined variable: strPassenger_r in ........
4

2 に答える 2

2

可変変数ではなく、配列を使用します。

$results = array();
while ($row_miles = mysql_fetch_assoc($rs_miles)) {
    $results[] = $row_miles;
}

$results[$i]['strTravelDate']たとえば、 にアクセスできるようになりました。

于 2013-09-02T13:29:25.627 に答える
0

MySQLライブラリの選択(現在では廃止された拡張機能)から変数の割り当て方法まで、あなたのアプローチは完全に間違っています。そのような目的で配列を使用します。また、PDO を使用する場合、作成した混乱はすべて次のようになります (PHP の PDO クラスを使用して $pdo オブジェクトを作成したと仮定します):

$stmt = $pdo->prepare("SELECT * FROM `tblsaved_mileage` WHERE `strUsername` = ?");

$stmt->execute(array($username));

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); // And now you have all of your data in $results array

N 個の変数を初期化する必要も、廃止された mysql_* 拡張機能を使用する必要も、取得したレコード セットをループする必要も、addslashes を使用する必要もありません。コードが少なくて済みます。

于 2013-09-02T13:34:28.477 に答える