1

何も機能していないため、基本的な PHP / MYSQL の更新が必要だと思います。

私の MYSQL テーブルには 2 行の情報があります。

 $results = mysql_query("SELECT Name, Description FROM products");
 $results = mysql_fetch_assoc($results);
 print_r($results);

これを印刷すると、得られる結果は 1 つだけです。Array ( [Name] => Banana [Description] => It's a lovely banana ). 表には間違いなく 2 つの結果があります。なぜこうなった?

第二に、このループは各結果の最初の文字のみを返しますが、その理由はわかりません!

foreach($results as $res) {
?>
    Name : <?php echo $res['Name']; ?><br />
    Description : <?php echo $res['Description']; ?><br />

<?php } ?>

今日、私の脳は真剣にスクランブルされています:(

4

3 に答える 3

4
while($res = mysql_fetch_assoc($results)){
?>
    Name : <?php echo $res['Name']; ?><br />
    Description : <?php echo $res['Description']; ?><br />

<?php } ?>
于 2013-03-05T17:27:27.080 に答える
1

MySQLは非推奨になっているため、PDOまたはMySQLiに移行する必要があります。後者の質問に答えるには、プリペアドステートメントを使用する必要があります(ただし、この場合、クエリをサニタイズする必要がないため、それほど重要ではありません)

$connection = new mysqli('localhost','root','pw','db');// start mysqli connection
$results = $connection ->prepare('SELECT Name, Description FROM products');// create the statement you want to work with
(object)array('Name'=>'','Description'=>'');// set up the variables you want to put retrieved data in
$results ->bind_result($res ->Name, $res ->Description);// attach the variables to the prepared statement
while($results ->fetch()){// execute the prepared statement
    // perform actions with $res->Name and $res ->Description
}
于 2013-03-05T17:39:09.267 に答える
0

最初の質問に答えるとmysql_fetch_assoc()、結果セットから一度に 1 行のデータしか取得できないためです。通常、while ループを使用して、次のようにすべての結果を収集します。

$results = mysql_query("SELECT Name, Description FROM products");
$result_array = array(); // don't name this array the same as your result set ($results) or you will overwrite it.
while($row = mysql_fetch_assoc($results)) {
    $result_array[] = $row;
}

正直なところ、各フィールドの最初の文字だけをエコーアウトする理由がわかりません。画面上でそのように表示されるだけで、HTML 構造に何らかの問題がありますか? つまり、HTML ソースを見てみると、正しく表示されているでしょうか。

于 2013-03-05T17:30:52.670 に答える