0

mysqlからWebページにデータを表示するのに助けが必要です。phpでコーディングしています。

私のデータベースは車(同じタイプ、たとえばChevy)の製品で構成されており、現在2行あり(必要に応じてさらに追加できます)、各車には画像パスと説明が含まれています。

1行(車)を表示できますが、すべての行を表示することはできません。車のデータベースからすべてのデータを取得するためにループを実行する必要があることはわかっていますが、それを実装する方法がわかりません。

これは私がこれまでに持っているものです。私がすでにデータベースノートに接続していると仮定します:私のウェブサイトに写真を表示したい画像パス。

これが私のウェブページに表示したい方法です:

    $query = "SELECT * FROM cars where cars.carType = 'Chevy' AND \
    cars.active = 1";
    $numberOfFieds = mysqli_num_fields($result);
    $numberOfRows = mysqli_num_rows($result);

   /* Gets the contents */
   $row = mysqli_fetch_row($result);
   $rows = mysqli_fetch_assoc($result);
   $fieldcarssontable = array_keys($row);



  echo "<table>";

  while($row = mysqli_fetch_assoc($result)){
   echo "<th>" . $fieldcarssontable[imgPath] . "</th>";
   echo "<th>" . $fieldcarssontable[description] . "</th>";

  }


  echo "</tr>";

  echo "</table>";
4

3 に答える 3

0

ループ内で$numberOfFieldsのスペルを間違えました。これは、ループコントロールに別の変数を使用していることを意味します。ループは機能しません。

PHPがこのようなものをキャッチできるように、エラーレポートをオンにすることをお勧めします。

于 2012-11-30T23:50:02.873 に答える
0

whileループを追加するだけです。mysqli_fetch_assocは行を返し、すべての行がフェッチされるまで内部ポインターを次の行に移動します。その後、falseを返し、whileループが停止します。

理解するための疑似構文

while ( this is true ) {
     execute this
}

だからあなたの場合、あなたは言うことができます

while ( $row = mysqli_fetch_assoc( $result ) ) {
   // process/output $row
} 

mysqli_fetch_assocとmysqli_fetch_rowは文字通り同じことを行います。assocは結果フィールド名をインデックスとして持つ配列を提供するため、アクセスが簡単です(fetch_rowを使用する場合は$row[0]ではなく$row['name'])。

楽しむ!:)

編集

// connect to your database server
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

// an error occured
if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}

// build your query
$query = "SELECT 
               *      # select actual fields instead of *
          FROM 
               cars
          WHERE
               cars.carType = 'Chevy'
          AND
               cars.active = 1";

// execute query
$result = mysqli_query($link, $query );

if ( !$result ) {
     die( 'no result' );
}

// number of fields
$numberOfFields = mysqli_num_fields($result);

// the field names
$fieldNames     = mysqli_fetch_fields($result);

// number of result rows
$numberOfRows = mysqli_num_rows($result);

// watch the content of fieldName and compare it with the table header in the output
print_r( $fieldName );

echo "<table>\n";

// table header, not neccessary to put this into a loop if the query isn't dynamic 
// so you actually know your field names - you can echo the header without any variable.
// for the sake of learning about loops I added this

foreach( $fieldNames as $index => $fieldName ) {
    echo "\t<th>field #" $index . ", name:" . $fieldName . "</th>\n";
}

// now it's time to walk through your result rows, since we only need to check for "true" a while loop does best

while ( $row = mysqli_fetch_assoc( $result ) ) {
    echo "\t<tr><td>" . $row['imgPath'] . "</td><td>" . $row['description'] . "</td></tr>\n";
}

echo "</table>\n";

// remove the result from memory
mysqli_free_result( $result );

mysqli_close( $link );
于 2012-11-30T23:56:08.460 に答える
0

これを使用してください...whileループ

<?php
// Array
while($result = mysql_fetch_assoc($result)) {
        //show you fields
        echo $result["FieldName"];
    }
?>

または、これを適切に使用してください

<?php
// Edit it as per your query
$query = "SELECT * FROM cars"; 

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while($row = $result->fetch_assoc()) {
        //show you fields
        echo $row["Name"];
    }

    /* free result set */
    $result->free();
}

/* close connection */
$mysqli->close();
?>
于 2012-12-01T00:06:11.267 に答える