0

したがって、mysqli を使用してデータベースからデータを取得する関数を含む PHP の次のコードがあります。

function displayuser(){
      $db = mysqli_connect("localhost", "root", "", "shop") or die("Error");
      $query = "SELECT id, username FROM users";
      $result = $db->query($query) or die("Error");
      while($row = $result->fetch_array()) {
          return $row['id'].' '.$row['username'];
      }
}

私の質問は; PHP も使用する必要があると仮定して、HTML を使用して Web ページに$row['id']$row['username']を表示するにはどうすればよいですか?

このようにする必要がありますか?たとえば、PHPファイルuser.phpで言います

<?php
   include_once('function.php');
   foreach(displayuser() as $display) {
?>
       <p><?php echo $display['id'];?></p>
<?php
   }
?>

mysqliではなくmysqlを扱っていたときに上記の表示方法を使用したので、改良された mysql に慣れようとしています。

編集 (新しいコード):

functions.php

function getuser() {

$db = mysqli_connect("localhost", "root", "", "shop") or die("Error");

$query = "SELECT id, username FROM users";

$result = $db->query($query) or die();

return $result->fetch_all(); }

display.php

<?php 
include_once('functions.php');

foreach(getuser() as $user) {

  echo $user['id']. ' '.$user['username'];
}
?>

実行すると、display.phpは空の結果を表示します。print_rを使用して配列の背後にあるデータを印刷しようとしましたが、配列が空だったようです。「foreach」などを使うべきではないのではないかと思いました。

4

2 に答える 2

2

まず、キーワード return は文字通りスクリプトを殺します。戻るとは、「私を呼んだところに戻る」という意味です。つまり、クエリの最初の行で displayUser 関数が終了します。次のように再構成します。

$result = $db->query($query);
return $result->fetch_all();

その後、残りは機能するはずですが、言い直して構造化します。

include_once('function.php');
foreach(displayuser() as $user) {
    echo "<p>" . $user['id'] . "</p>";
}
于 2013-09-10T00:23:12.260 に答える
1

あなたはもうすぐそこにいます、あなたは次のようにそれを行うことができます:

function.php

function get_users(){
      $db = mysqli_connect("localhost", "root", "", "shop") or die("Error");
      $query = "SELECT id, username FROM users";
      $result = $db->query($query) or die("Error");
      return $result->fetch_all();
}

表示ファイル

<?php
   include_once('function.php');
   $users = get_users();
   foreach($users as $user) {
       echo '<p>' . $user['id'] . ' ' . $user['username'] . '</p>';
   }
?>

これにより、問題がより明確に分離され、関数呼び出しに HTML がないため、複数回再利用でき、重複コードを削減できます。

于 2013-09-10T00:22:42.900 に答える